2012-03-14 133 views
0

我正在寻找将文件保存到数组中的最简单方法。为此,我想使用numpy.savetxt,但问题是我的数组由n列组成(数字取决于我要做的),它包含复杂元素(x + yj)。我知道如何保存它,如果有一列和真正的元素,但我不知道该怎么做。用python写入文件

有没有人有想法?

+0

对不起,我不能发表评论,但你看着http://stackoverflow.com/questions/3685265/how-to-write-a-multidimensional-array-to-a-text-file 。耶实际上作为评论 – Snesticle 2012-03-14 18:10:38

+0

我红了,但没有一个非常简短的答案。事实上,我想写'numpy.savetext('myfile',myarray,fmt = ???)''。 – PanAkry 2012-03-14 18:20:06

+0

你试过我给的例子吗?我在翻译中跑了他们,所以我知道他们工作。输出是否必须是人类可读的? – strcat 2012-03-14 18:22:04

回答

2

你可以pickle他们:

>>> A = np.array([[1,2],[3,4+2j]]) 
>>> pickle.dump(A, open("out.pkl", "wb")) 
>>> pickle.load(open("out.pkl", "rb")) 
array([[ 1.+0.j, 2.+0.j], 
     [ 3.+0.j, 4.+2.j]]) 

然而,这将是更好地使用numpy.savenumpy.load,他们为此设计的,并会占用更少的空间。

>>> np.save("out.npy", A) 
>>> np.load("out.npy") 
array([[ 1.+0.j, 2.+0.j], 
     [ 3.+0.j, 4.+2.j]]) 
+0

我已经试过这个,答案是'铸造复杂的值真正放弃虚部fh.write(asbytes(format%tuple(row)+ newline))'' – PanAkry 2012-03-14 18:16:55

+0

'numpy.savetxt'给出输出,而不是'numpy。 save'。 'savetxt'函数产生人类可读的输出,并且它不起作用。 – strcat 2012-03-14 18:18:13

+0

numpy.save上的+1,如果你不打算在Python之外使用它。 – rdchambers 2012-03-14 19:40:08