这似乎是一个微不足道的问题,但我找不到我想要的答案。 我有一个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]])
我做错了什么?
答案 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.]])