gpt4 book ai didi

python - 如何将复杂矩阵保存在文件中?

转载 作者:太空宇宙 更新时间:2023-11-04 03:51:38 25 4
gpt4 key购买 nike

我必须使用 numpy 的 savetxt 命令将下面显示的包含复杂数据的矩阵保存到扩展名为 .H 的文件中,但我无法保存它。要保存的矩阵是

[[   1.0+0.j    0.0+0.j    0.0+0.j]
[ 1.0+0.j 1.0+0.j 0.0+0.j]
[ 2.0+0.j 2.0+0.j 0.0+0.j]
...,
[ 683.0+0.j 688.0+0.j -2.7+0.j]
[ 684.0+0.j 689.0+0.j -2.7+0.j]
[ 685.0+0.j 690.0+0.j -2.7+0.j]]

我试过这个命令但是它给出错误

>>savetxt('H.H',H_new.H,fmt='%.4e%+.4j%.4e%+.4j%.4e%+.4j',delimiter=' ');
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/numpy/lib/npyio.py", line 974, in savetxt
% fmt)
AttributeError: fmt has wrong number of % formats. %.4e%+.4j%.4e%+.4j%.4e%+.4j

最佳答案

您的格式字符串缺少一些格式字符。尝试类似的东西

fmt='%.4e%+.4ej %.4e%+.4ej %.4e%+.4ej'

但看起来您需要 numpy 1.7.0 或更高版本;见https://github.com/numpy/numpy/commit/1475319160baed782daa39e0de0c0655c2abe4b5

它适用于 numpy 1.8.0,但不适用于 1.6.1。

使用 numpy 1.6.1,您可以通过首先创建复杂数据的真实 View 来以这种格式保存数据。

在此示例(ipython session )中,我使用的是 numpy 1.6.1:

In [28]: np.__version__
Out[28]: '1.6.1'

z 是一个复数数组,形状为 (2, 3):

In [29]: z
Out[29]:
array([[ 1.+2.j, -3.+4.j, 5.-6.j],
[-1.+0.j, 0.+2.j, 3.+0.j]])

使用 view 方法创建一个形状为 (2, 6) 的真实数组:

In [30]: rz = z.view(float)

In [31]: rz
Out[31]:
array([[ 1., 2., -3., 4., 5., -6.],
[-1., 0., 0., 2., 3., 0.]])

使用savetxt 保存数组。格式字符串使用整行,因此无需提供 delimiter 参数:

In [32]: savetxt('z.txt', rz, fmt='%.4e%+.4ej %.4e%+.4ej %.4e%+.4ej')

看一下输出:

In [33]: !cat z.txt
1.0000e+00+2.0000e+00j -3.0000e+00+4.0000e+00j 5.0000e+00-6.0000e+00j
-1.0000e+00+0.0000e+00j 0.0000e+00+2.0000e+00j 3.0000e+00+0.0000e+00j

可以使用 np.loadtxtnp.genfromtxt 将该文件读回一个 numpy 数组。要使用loadtxt,必须告知数据类型是复杂的:

In [8]: loadtxt('z.txt', dtype=np.complex128)
Out[8]:
array([[ 1.+2.j, -3.+4.j, 5.-6.j],
[-1.+0.j, 0.+2.j, 3.+0.j]])

genfromtxt 使用相同的参数。 genfromtxt 也可以尝试通过给定参数 dtype=None 自行确定数据类型。这适用于复杂的值:

In [9]: genfromtxt('z.txt', dtype=None)
Out[9]:
array([[ 1.+2.j, -3.+4.j, 5.-6.j],
[-1.+0.j, 0.+2.j, 3.+0.j]])

关于python - 如何将复杂矩阵保存在文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21012484/

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