2014-10-10 87 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