我在从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*
,但它不起作用。
有什么建议吗? 感谢
答案 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'然后再回到一个复数。