我有一个带有虚数的文本文件,我希望将其导入到Python中。文本文件是从MATLAB中保存的,它使用i作为虚数,Python使用j作为虚数。这导致导入文件时出错。
a = np.loadtxt('a.txt')
以下是文本文件中几行的示例:
282814803.000000 + 0.00000000000000i
-16531486.2042027 + 10391991.8573661i
6013078.93662147 - 7538432.00418058i
答案 0 :(得分: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)]
答案 1 :(得分:0)
这里有一行示例:
>>> line="282814803.000000 + 163486.00000000000000i"
>>> line=line.replace('i', 'j')
>>> line=line.replace(' ', '')
>>> complex(line)
(282814803+163486j)
然后你可以这样做:
list=[]
with open('data.txt') as data:
for line in data:
line=line.replace('i', 'j')
line=lim]ne.replace(' ', '')
list.append(complex(line))
会给你:
>>>list
[(282814803+163486.00468j), (-16531486.2042027+10391991.8573661j), (6013078.93662147-7538432.00418058j)]
答案 2 :(得分:-1)
可能的解决方案如下,但您需要首先预处理.txt文件。
如果你打开txt文件并替换(例如Windows上的CTRL + H)所有+符号只有[空格]而所有我用[空格]你会有类似的东西:
282814803.0 0.00
-16531486.2 10391991.85
6013078.9 7538432.00
然后你可以使用:
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数组而不是列表!