将三个1D阵列组合成2D阵列?

时间:2017-05-13 13:26:17

标签: python arrays python-2.7 numpy concatenation

我有三个形状(250L,)的numpy数组cIerror。我希望能够将三个数组保存到文本文件中,以便每个数组都是文件中的一列。到目前为止,我尝试了以下内容:

DataArray = np.concatenate((c,I,Error),axis=1)
np.savetxt('VaryingC.txt',DataArray)

这会返回错误,因为初始数组是1D:

  

IndexError:轴1越界[0,1)

如何将三个数组组合成一个形状(250,3)数组?

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)