【问题标题】:Import/export high rank numpy array to text file将高级 numpy 数组导入/导出到文本文件
【发布时间】:2014-10-10 18:45:25
【问题描述】:

我有一个排名较高的 numpy.ndarray - 例如,形状 (100,100,100,2)。将它写入文本文件以便在其他程序和 numpy 中轻松导入的最佳方法是什么?

【问题讨论】:

  • this answer 讲解如何使用np.savetxt() 处理多维数组,符合你的目的...

标签: python numpy io multidimensional-array


【解决方案1】:

您可以使用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)

【讨论】:

  • 这就是我一直在做的事情。我希望有更好的方法,但这可能是最好的。
【解决方案2】:

您可以使用tofile,也是numpy (link to doc) 的一部分。要读取二进制文件,只需使用fromfiledoc here

我不确定可移植性,但如果速度很重要,编写二进制文件是更好的选择。

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

【讨论】:

  • 以前在堆栈溢出时出现过similar question。也可以查看其他选项。
  • 问题不在于大小或速度,而在于便携性。如果我想用另一个程序读取二进制文件,我认为会有一些问题。您的链接确实指向了 HDF5 格式,这可能符合我的目的。但是,在问题中我确实指定了一个文本文件,这个答案没有使用。
猜你喜欢
  • 2018-08-11
  • 1970-01-01
  • 1970-01-01
  • 2015-10-01
  • 2018-11-30
  • 1970-01-01
  • 2018-01-02
  • 1970-01-01
  • 2017-12-23
相关资源
最近更新 更多