【发布时间】:2014-04-02 20:11:53
【问题描述】:
假设我从一些计算中得到一个 numpy 矩阵。这是我的 numpy 矩阵 'result1'::
result1=
[[ 1. 0. 0. 0.00375 -0.01072 -0. -1000. ]
[ 2. 3. 4. 0. -0.004 750. 0. ]
[ 3. 3. 0. 0. 0. -750. 1000. ]]
现在我想将这个矩阵写入一个名为“result.txt”的文本文件中。为此,我编写了以下代码::
np.savetxt('result.txt', result1, fmt='%.2e')
但它在一行中给了我矩阵的所有元素。
1.00e+00 0.00e+00 0.00e+00 3.75e-03 -1.07e-02 -1.14e-13 -1.00e+032.00e+00 3.00e+00 4.00e+00 0.00e+00 -4.00e-03 7.50e+02 0.00e+003.00e+00 3.00e+00 0.00e+00 0.00e+00 0.00e+00 -7.50e+02 1.00e+03
我想以正确的矩阵格式在文本文件中写入矩阵。我怎样才能做到这一点?我用了关键字newline='\n'或者newline='',但是结果是一样的。
提前谢谢...
=======
这个编辑的部分是给@Warren的
试试这个:
>>> import numpy as np
>>> mat=np.matrix([[1, 2, 3],[4, 5, 6],[7, 8, 9]])
>>> mat
matrix([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
>>> np.savetxt('text.txt',mat,fmt='%.2f')
在我的 text.txt 文件中,我得到:
1.00 2.00 3.004.00 5.00 6.007.00 8.00 9.00
【问题讨论】:
-
我无法重现这个。如果我给
savetxt提供一个二维数组(或np.matrix),它会为数组的每一行创建一个文件。您能否创建一个完整的最小示例,我们可以运行它来提供单行文件? -
[此评论是对已删除评论的回复。]您的示例对我来说按预期工作(使用 numpy 1.7.1 和 1.8.0)。您如何查看文件“text.txt”?我怀疑您显示的输出中在 3.00 和 4.00 之间以及 6.00 和 7.00 之间缺少空格。您在问题中的示例输出也缺少行分隔符所在的空格。 (另外,你在什么操作系统上运行它?可能没关系,但知道它不会有坏处。)
-
@WarrenWeckesser,请检查编辑部分。
-
这看起来很相关,虽然它只提到了 python 2.7:github.com/numpy/numpy/pull/3976(拉取请求)和github.com/numpy/numpy/issues/3975(错误报告)。
标签: python numpy matrix text-files