2

スタックオーバーフロー、

numpy 配列にインポートする必要がある複素数 (例: -2.2982235934153075E-11+2.1179547211742553E-9i) を含む行列があります。私はgenfromtext(file)他のすべての実際の値を解析するために使用してきましたがnan、すべての複雑な値を取得しています。何か案は?

self.raw = (genfromtxt(self.loc, delimiter=',', skip_header=9, dtype=float))
[m,n] = shape(self.raw)
data = zeros((m, n-3))
data[:, :] = self.raw[:, 3::]

戻り値:

data = array([nan, nan, nan, ...])
4

4 に答える 4

4

できるよ:

import numpy as np
a = np.genfromtxt(filename, converters={0: lambda x: x.replace('i','j')},
                  dtype=str)
a = np.complex_(a)

convertersテキストファイルがi虚部を示すために使用しているため、パラメーターが必要であることに注意してください。

多くの列がある場合に複雑な引数を避けるために、テキスト ファイルを外部で変換してすべてをibyに置き換える方が簡単な場合があります。jconverters

虚数を含むテキストファイルの形式が次の場合:

 (-2.298223593415307508e-11+2.117954721174255306e-09j)
 (-2.298223593415307508e-11+2.117954721174255306e-09j)
 (-2.298223593415307508e-11+2.117954721174255306e-09j)
 (-2.298223593415307508e-11+2.117954721174255306e-09j)
 (-2.298223593415307508e-11+2.117954721174255306e-09j)
 (-2.298223593415307508e-11+2.117954721174255306e-09j)
 (-2.298223593415307508e-11+2.117954721174255306e-09j)

のみを使用して読み取ることができる場所:

a = np.loadtxt(filename).view(complex)

例えば...

于 2013-08-16T19:33:31.810 に答える
-1

with を使用して、csv ファイルを文字列の配列としてインポートしgenfromtxt(...)ますdtype='str'。次に、各エントリを で操作できますnp.vectorize(...)

import numpy as np
from numpy import genfromtxt

# import data as an array of strings using the dtype
temp = genfromtxt('matlab_sim_Z.csv', delimiter=',',dtype='str')

# perform elementwise conversion to complex numpers
mapping = np.vectorize(lambda t:complex(t.replace('i','j')))
data = mapping(temp)

一行で:

data = np.vectorize(lambda t:complex(t.replace('i','j'))) (genfromtxt('matlab_sim_Z.csv', delimiter=',',dtype='str'))
于 2017-11-17T13:17:18.807 に答える