gpt4 book ai didi

python - 如何使用 numpy.savetxt 保存和加载复数数组?

转载 作者:IT老高 更新时间:2023-10-28 21:12:35 29 4
gpt4 key购买 nike

我想使用 numpy.savetxt()将复数数组保存到文本文件中。问题:

  • 如果使用默认格式字符串保存复数数组,虚部将被丢弃。
  • 如果你使用 fmt='%s',那么 numpy.loadtxt() 无法加载它,除非你指定 dtype=complex, converters= {0: lambda s: complex(s)}。即使这样,如果数组中有 NaN,加载仍然会失败。

好像有人问过这个multiple times在 Numpy 邮件列表中,甚至提交了 bug ,但没有得到回应。在我自己组装之前,有没有一种规范的方法可以做到这一点?

最佳答案

这更容易,并且保存了一些临时数组,只需将数组重新解释为真正的数组。

保存:

numpy.savetxt('outfile.txt', array.view(float))

加载中:

array = numpy.loadtxt('outfile.txt').view(complex)

如果您希望在文件中的同一行中包含实部和虚部,您可以使用

numpy.savetxt('outfile.txt', array.view(float).reshape(-1, 2))

array = numpy.loadtxt('outfile.txt').view(complex).reshape(-1)

分别。

(请注意,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)

整形是必要的,因为 numpy.view() 不对跨步数组进行操作。

关于python - 如何使用 numpy.savetxt 保存和加载复数数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6494102/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com