【发布时间】:2014-10-10 18:45:25
【问题描述】:
我有一个排名较高的 numpy.ndarray - 例如,形状 (100,100,100,2)。将它写入文本文件以便在其他程序和 numpy 中轻松导入的最佳方法是什么?
【问题讨论】:
-
this answer 讲解如何使用
np.savetxt()处理多维数组,符合你的目的...
标签: python numpy io multidimensional-array
我有一个排名较高的 numpy.ndarray - 例如,形状 (100,100,100,2)。将它写入文本文件以便在其他程序和 numpy 中轻松导入的最佳方法是什么?
【问题讨论】:
np.savetxt() 处理多维数组,符合你的目的...
标签: python numpy io multidimensional-array
您可以使用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)
【讨论】:
您可以使用tofile,也是numpy (link to doc) 的一部分。要读取二进制文件,只需使用fromfile、doc here。
我不确定可移植性,但如果速度很重要,编写二进制文件是更好的选择。
import numpy as np
a = np.random.rand(100,100,100,2)
a.tofile('test.txt')
【讨论】: