当我使用np.savetxt(´file.txt´,(arr1,arr2,arr3))时,将多个numpy数组保存到文件中的最佳方法是什么?
数组是按列而不是按行保存的,因此很难导入excel.
如何以更标准的方式保存阵列?
谢谢
解决方法:
使用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
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获取文件和从文件获取数组的快速简便的方法.它使文件可移植以与其他程序一起使用.
标签:python,numpy