2012-03-14 96 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