将三个 1D 阵列组合成一个 2D 数组



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

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

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

索引错误: 轴 1 越界 [0, 1(

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

concatenate连接现有轴,stack插入新轴:

DataArray = np.stack((c,I,Error),axis=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

在您的情况下,您可以创建一个新数组,然后将其转置:

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)

最新更新