numpy 数组到一个文件,np.savetxt

Posted

技术标签:

【中文标题】numpy 数组到一个文件,np.savetxt【英文标题】:numpy array to a file, np.savetxt 【发布时间】:2016-01-13 13:33:12 【问题描述】:

当我使用 np.savetxt(´file.txt´, (arr1,arr2,arr3)) 时,将多个 numpy 数组保存到文件的最佳方法是什么 数组是按列而不是按行保存的,因此很难导入到 Excel 中。 如何以更标准的方式保存数组?

谢谢

【问题讨论】:

这取决于数组维度。您可以尝试先将它们分组: arr=np.vstack((arr1,arr2,arr3)) 然后保存。 【参考方案1】:

我几乎可以直接回答这个问题http://rinocloud.github.io/rinocloud-tutorials/saving-data-with-numpy

使用 vstack

使用 vstack 从 numpy 保存多个数组

假设我们有一个要保存到文件中的 numpy 数组

x = np.random.random_integers(0, 10, size=10)
np.savetxt('test.txt', x)

它会给出一个包含以下内容的文件

0.0e+00 8.0e+00 7.0e+00 6.0e+00 1.0e+01 7.0e+00 9.0e+00 9.0e+00 0.0e+00 3.0e+00

这很棒,基于列的表示意味着它很容易导入到 csv 兼容程序中 如 excel、LabView、Matlab 和 Origin。

但是当我们想要将两个或多个数组保存在一起并确保文件仍然可以轻松导入时会发生什么 进入不同的程序。

如果我们只是使用

x = np.random.random_integers(0, 10, size=10)
y = np.random.random_integers(0, 10, size=10)
z = np.random.random_integers(0, 10, size=10)

np.savetxt('test.txt', (x, y, z))

我们得到

9.0e+00 9.0e+00 4.0e+00 2.0e+00 0.0e+00 8.0e+00 1.0e+01 2.0e+00 1.0e+00 9.0e+00 2.0e+00 3.0e+00 1.0e+00 9.0e+00 2.0e+00 5.0e+00 1.0e+01 2.0e+00 8.0e+00 3.0e+00 9.0e+00 8.0e+00 2.0e+00 7.0e+00 9.0e+00 0.0e+00 6.0e+00 0.0e+00 2.0e+00 3.0e+00

所以让我们改用numpy vstack。

x = np.random.random_integers(0, 10, size=10)
y = np.random.random_integers(0, 10, size=10)
z = np.random.random_integers(0, 10, size=10)

np.savetxt('test.txt', np.vstack((x, y, z)).T)

这给了我们一个test.txt

9.0e+00 2.0e+00 9.0e+00 9.0e+00 3.0e+00 8.0e+00 4.0e+00 1.0e+00 2.0e+00 2.0e+00 9.0e+00 7.0e+00 0.0e+00 2.0e+00 9.0e+00 8.0e+00 5.0e+00 0.0e+00 1.0e+01 1.0e+01 6.0e+00 2.0e+00 2.0e+00 0.0e+00 1.0e+00 8.0e+00 2.0e+00 9.0e+00 3.0e+00 3.0e+00

更便携,可以轻松导入excel等程序。

要使用 numpy 再次将文件读取到数组中,请使用

x, y, z = np.loadtxt('test.txt').T

这是一种从 numpy.xml 中将数组输入和输出文件的快速简便的方法。它使文件可移植以供其他程序使用。

【讨论】:

以上是关于numpy 数组到一个文件,np.savetxt的主要内容,如果未能解决你的问题,请参考以下文章

np.savetxt()——将array保存到txt文件,并保持原格式

Numpy中数据的常用的保存与读取

Numpy savetxt如何在那个位置指定零?

NumPy数据存取与函数

如何将 numpy 数组写入 csv 文件?

将numpy数组保存到txt