我有三个形状(250L,)
的numpy数组c
,I
和error
。我希望能够将三个数组保存到文本文件中,以便每个数组都是文件中的一列。到目前为止,我尝试了以下内容:
DataArray = np.concatenate((c,I,Error),axis=1)
np.savetxt('VaryingC.txt',DataArray)
这会返回错误,因为初始数组是1D:
IndexError:轴1越界[0,1)
如何将三个数组组合成一个形状(250,3)
数组?
答案 0 :(得分:2)
concatenate
加入现有轴,stack
插入新轴:
DataArray = np.stack((c,I,Error),axis=1)
答案 1 :(得分:1)
看来你正在寻找:
DataArray = np.column_stack((c,I,Error))
<强>定时:强>
In [201]: a1 = np.random.randint(10**6, size=10**6)
In [202]: a2 = np.random.randint(10**6, size=10**6)
In [203]: a3 = np.random.randint(10**6, size=10**6)
In [204]: %timeit np.column_stack((a1,a2,a3))
100 loops, best of 3: 14.1 ms per loop
In [205]: %timeit np.stack((a1,a2,a3),axis=1)
100 loops, best of 3: 14.2 ms per loop
In [206]: %timeit np.transpose([a1,a2,a3])
100 loops, best of 3: 10.7 ms per loop
答案 2 :(得分:1)
在您的情况下,您可以创建一个新数组然后转置它:
np.transpose([c, I, Error])
np.transpose
会自动创建一个新数组,因此您无需自己创建一个数组。
例如:
>>> import numpy as np
>>> a = np.array([1, 1, 1, 1, 1])
>>> b = np.array([2, 2, 2, 2, 2])
>>> c = np.array([3, 3, 3, 3, 3])
>>> DataArray = np.transpose([a, b, c])
>>> DataArray
array([[1, 2, 3],
[1, 2, 3],
[1, 2, 3],
[1, 2, 3],
[1, 2, 3]])
>>> DataArray.shape
(5, 3)