2017-07-03 9 views
1

私はPythonにインポートしたいものを使って虚数のテキストファイルを持っています。テキストファイルは、iを虚数に使用し、Pythonはjを虚数に使用するMATLABから保存されました。これは、ファイルをインポートするエラーを引き起こしています。ここでPythonで虚数のiを含むテキストファイルをインポートする

a = np.loadtxt('a.txt') 

は、テキストファイル内の数行の例である:

282814803.000000 + 0.00000000000000i 
-16531486.2042027 + 10391991.8573661i 
6013078.93662147 - 7538432.00418058i 
+0

これは一般的な問題です(Pythonでは複雑です)。 a.txtをpythonリストまたはnumpy配列にロードしますか?私は "numpy配列の場合"のaswerを投稿しました。 – sera

答えて

1

一つ、迅速かつ汚い方法は、次の操作を実行するために、次のようになります。ここ

values = list() 
with open('a.txt') as h: 
    for line in h: 
     values.append(eval(line.replace('i', 'j'))) 

# OUTPUT 
# print values 
# [(282814803+0j), (-16531486.2042027+10391991.8573661j), (6013078.93662147-7538432.00418058j)] 
0

例1行分:

>>> line="282814803.000000 + 163486.00000000000000i" 
>>> line=line.replace('i', 'j') 
>>> line=line.replace(' ', '') 
>>> complex(line) 
(282814803+163486j) 

次にあなたが行うことができます:

>>>list 
[(282814803+163486.00468j), (-16531486.2042027+10391991.8573661j), (6013078.93662147-7538432.00418058j)] 
-1

可能な解決策は以下の通りですが、あなたが最初に前処理する.txtファイルを必要とする:あなたを与えるだろう

list=[] 
with open('data.txt') as data: 
    for line in data: 
     line=line.replace('i', 'j') 
     line=lim]ne.replace(' ', '') 
     list.append(complex(line)) 

を。

あなたは(Windows上egCTRL + H)txtファイルを開いて、交換する場合は、単に[スペース]を持つすべての+記号とすべての私は[スペース]で、あなたのようなものがあります:

282814803.0 0.00

-16531486.2 6013078.9 7538432.00

10391991.85

は、次に、あなたが使用することができます。

import numpy 
a = np.loadtxt('a.txt').view(complex) 
print(a) 

結果は次のとおりです。

>>> a 
array([[ 2.82814803e+08  +0.j  ], 
     [ 1.65314862e+07+10391991.8573661j ], 
     [ 6.01307894e+06 +7538432.00418058j]]) 

は、多分それは最善の方法ではありませんが、それがうまく機能し、それはあなたがnumpyの配列ではないリストを与えます!

関連する問題