如何使用 numpy.savetxt 保存和加载复数数组?
我想使用 numpy.savetxt()
将复数数组保存到文本文件中。问题:
- 如果使用默认格式字符串保存复数数组,则虚部将被丢弃。
- 如果您使用
fmt='%s'
,则numpy.loadtxt()
无法加载它,除非您指定dtype=complex, converters={0: lambda s:复数}
。即使如此,如果数组中存在 NaN,加载仍然会失败。
看起来有人询问过这个多个 Numpy 上的时间邮件列表,甚至提交了 bug,但尚未得到回复。在我自己组装一些东西之前,有没有一种规范的方法可以做到这一点?
I want to use numpy.savetxt()
to save an array of complex numbers to a text file. Problems:
- If you save the complex array with the default format string, the imaginary part is discarded.
- If you use
fmt='%s'
, thennumpy.loadtxt()
can't load it unless you specifydtype=complex, converters={0: lambda s: complex(s)}
. Even then, if there are NaN's in the array, loading still fails.
It looks like someone has inquired about this multiple times on the Numpy mailing list and even filed a bug, but has not gotten a response. Before I put something together myself, is there a canonical way to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是我的解决方案,以防有人从谷歌上遇到这个问题。
保存:
加载:
我仍然会将复选标记授予更好的解决方案!
Here's my solution, in case anybody hits this question from Google.
Saving:
Loading:
I will still award the checkmark to a better solution!
它更容易并保存一些临时数组,以便将数组重新解释为真正的数组。
保存:
加载:
如果您希望实部和虚部位于文件的同一行,可以
使用或
分别
。 (请注意,
view()
和reshape()
都不会复制数组 - 它只会以不同的方式重新解释相同的数据。)问题的附录提问者:
如果你想在同一个文件中保存多个复杂数组,你可以这样做:
重塑是必要的,因为
numpy.view()
不操作跨步数组。It's easier and saves a few temporary arrays to just reinterpret the array as a real array.
Saving:
Loading:
If you prefer to have real and imaginary part on the same line in the file, you can use
or
respectively.
(Note that neither
view()
norreshape()
copies the array -- it will just reinterpret the same data in a different way.)Addendum from the question asker:
If you want to save more than one complex array in the same file, you can do it like so:
The reshaping is necessary because
numpy.view()
doesn't operate on strided arrays.