如何在多维数组中插入列?

时间:2015-03-16 08:18:51

标签: python arrays numpy

这似乎是一个微不足道的问题,但我找不到我想要的答案。 我有一个2D数组说:

a = np.array([[1,3,5],[2,4,6]])

另一栏

b = np.array([9,11])
bt = np.reshape(b, (2,1))

我想在数组bt的零列添加/追加a列。我尝试使用numpy.insert

tt = np.insert(a,0,bt,axis=1)

但结果是:

array([[ 9, 11,  1,  3,  5],
       [ 9, 11,  2,  4,  6]])

我想要的是:

array([[ 9, 1,  3,  5],
       [ 11,  2,  4,  6]])

我做错了什么?

3 个答案:

答案 0 :(得分:2)

您可以直接使用b

tt = np.insert(a, 0, b, axis=1)
print tt

[[ 9  1  3  5]
 [11  2  4  6]]

或者,如果您从bt形状开始,转置它:

tt = np.insert(a, 0, bt.T, axis=1)
print tt

[[ 9  1  3  5]
 [11  2  4  6]]

答案 1 :(得分:2)

您可以使用numpy.column_stack来执行此操作:

a = np.array([[1,3,5],[2,4,6]])
b = np.array([9,11])
np.column_stack((b, a))

array([[ 9,  1,  3,  5],
       [11,  2,  4,  6]])

答案 2 :(得分:0)

作为np.hstack旁边的替代方案,您可以使用indexing

>>> c=np.zeros((a.shape[0],a.shape[1]+1))
>>> c[::,0]=b
>>> c[::,1:]=a
>>> c
array([[  9.,   1.,   3.,   5.],
       [ 11.,   2.,   4.,   6.]])