使用python从csv文件中读取复数

时间:2017-03-21 12:58:15

标签: python csv numpy

我在从csv文件中读取复数时遇到问题。 该文件的格式如下:

( -353.10438 +j1.72317617 ),( -23.16000 +j0.72512251 )

我尝试使用numpy.genfromtxt:

导入数据
data=genfromtxt(fname, dtype=complex, skip_header=10, skip_footer=212, delimiter=',')

但每次我有一个复杂的条目,它都会返回nan+0.j。 我还尝试删除数字前后的括号,并将j替换为1j*,但它不起作用。

有什么建议吗? 感谢

2 个答案:

答案 0 :(得分:5)

我将每个'j'移动到复数的虚部后面的位置,并挤出所有空白以得到这样的样本文件。

(-353.10438+1.72317617j),(-23.16000+0.72512251j)
(-353.10438+1.72317617j),(-23.16000+0.72512251j)
(-353.10438+1.72317617j),(-23.16000+0.72512251j)
(-353.10438+1.72317617j),(-23.16000+0.72512251j)

然后我运行类似于你的代码,其结果类似于以下内容。

>>> np.genfromtxt('fname.txt', dtype=complex, delimiter=',')
array([[-353.10438+1.72317617j,  -23.16000+0.72512251j],
       [-353.10438+1.72317617j,  -23.16000+0.72512251j],
       [-353.10438+1.72317617j,  -23.16000+0.72512251j],
       [-353.10438+1.72317617j,  -23.16000+0.72512251j]])

我不知道你可能需要做些什么来获得类似的结果,如果这种方法确实对你有效。

祝你好运!

答案 1 :(得分:3)

您可以使用

np.complex(str(a).replace('j', '') + 'j'

首先投射到一个字符串,然后转移' j'然后再回到一个复数。

相关问题