pto*_*ato 17 python numpy complex-numbers
我想用来numpy.savetxt()
将复数的数组保存到文本文件中.问题:
fmt='%s'
,则numpy.loadtxt()
除非您指定,否则无法加载它dtype=complex, converters={0: lambda s: complex(s)}
.即使这样,如果阵列中有NaN,加载仍然失败.它看起来像有人询问这多个 倍的numpy的邮件列表上,甚至提交了错误,但一直没有得到答复.在我自己整理东西之前,有没有一种规范的方法可以做到这一点?
Sve*_*ach 15
它更容易并保存一些临时数组,只是将数组重新解释为一个真正的数组.
保存:
numpy.savetxt('outfile.txt', array.view(float))
Run Code Online (Sandbox Code Playgroud)
加载:
array = numpy.loadtxt('outfile.txt').view(complex)
Run Code Online (Sandbox Code Playgroud)
如果您希望在文件的同一行中包含实部和虚部,则可以使用
numpy.savetxt('outfile.txt', array.view(float).reshape(-1, 2))
Run Code Online (Sandbox Code Playgroud)
要么
array = numpy.loadtxt('outfile.txt').view(complex).reshape(-1)
Run Code Online (Sandbox Code Playgroud)
分别.
(请注意,既view()
不会reshape()
复制数组也不会复制数组 - 它只会以不同的方式重新解释相同的数据.)
提问者的补遗:
如果要在同一文件中保存多个复杂数组,可以这样做:
numpy.savetxt('outfile.txt', numpy.column_stack([
array1.view(float).reshape(-1, 2),
array2.view(float).reshape(-1, 2),
]))
array1, array2 = numpy.loadtxt('outfile.txt', unpack=True).view(complex)
Run Code Online (Sandbox Code Playgroud)
重新整形是必要的,因为numpy.view()
不在跨步阵列上操作.
如果有人从Google提出这个问题,这是我的解决方案。
保存:
numpy.savetxt('outfile.txt', numpy.column_stack([array.real, array.imag]))
Run Code Online (Sandbox Code Playgroud)
正在加载:
array_real, array_imag = numpy.loadtxt('outfile.txt', unpack=True)
array = array_real + 1j * array_imag
Run Code Online (Sandbox Code Playgroud)
我仍然会选择一个更好的解决方案!
归档时间: |
|
查看次数: |
14138 次 |
最近记录: |