2014-10-10 141 views
1

我有一個numpy.ndarray具有很高的排名 - 比如說,形狀(100,100,100,2)。將其寫入文本文件的最佳方法是什麼,以便於在其他程序和numpy中導入?導入/導出高等級numpy數組到文本文件

+0

[這個答案](http://stackoverflow.com/a/26235114/832621)說明如何使用'np.savetxt()'處理多維數組,你的目的配件.. – 2014-10-10 23:43:45

回答

0

如果您扁平化陣列並在標題中包含陣列形狀(第一行),則可以使用np.savetxt)。你知道如何當你在其他程序中打開它重塑數組方式:

import numpy as np 
a = np.random.rand(100,100,100,2) 
np.savetxt('test.txt', a.flatten(), header=str(a.shape)) 

要導入數據,重塑它,你能做到以下幾點,例如:

import re 
with open('test.txt') as f: 
    shape = tuple(int(num) for num in re.findall(r'\d+', f.readline())) 
data = np.loadtxt('test.txt').reshape(shape) 
+0

這就是我一直在做的事情。我希望有更好的方法,但這可能是最好的。 – 2014-10-10 20:23:47

0

你可以使用tofile,也是numpylink to doc)的一部分。要讀取二進制文件,只需使用fromfile,doc here

我不確定可移植性,但如果速度很重要,寫入二進制文件是更好的選擇。

import numpy as np 
a = np.random.rand(100,100,100,2) 
a.tofile('test.txt') 
+0

以前有一個關於堆棧溢出的[類似問題](http://stackoverflow.com/q/8775786/1498309)。檢查此以獲取其他選項。 – makra 2014-10-10 20:44:25

+0

問題不在於規模或速度,而在於可移植性。如果我想用另一個程序讀取二進制文件,我會想到一些問題。您的鏈接確實將我指向HDF5格式,這可能符合我的目的。但是,在這個問題中,我確實指定了一個文本文件,這個答案沒有使用。 – 2014-10-10 22:56:13