Python中连接二维numpy数组

3
我希望将这两个数组连接起来。
a = np.array([[1,2,3],[3,4,5],[6,7,8]])  
b = np.array([9,10,11])

使得
a = [[1,2,3,9],[3,4,5,10],[6,7,8,11]]

尝试使用连接函数

for i in range(len(a)):
  a[i] = np.concatenate(a[i],[b[i]])

遇到了一个错误:

TypeError: 'list' object cannot be interpreted as an integer

尝试使用追加(append)方法

for i in range(len(a)):
  a[i] = np.append(a[i],b[i])

又出现了一个错误:

ValueError: could not broadcast input array from shape (4,) into shape (3,)

(我是一个新手,如果我没有格式化好,对不起)


你可以使用 extend():可能是 这个问题 的重复。 - D_00
这个回答解决了你的问题吗?将一个NumPy数组连接到另一个NumPy数组 - alex
似乎extend()只适用于列表。我可以将它们转换为列表,扩展它们,然后将其转换回numpy数组。但是肯定有更好的方法来做对吧? - N_ E
2个回答

1
你可以使用hstack和向量广播来实现这一点:
a = np.array([[1,2,3],[3,4,5],[6,7,8]])  
b = np.array([9,10,11])
res = np.hstack((a, b[:,None]))
print(res)

输出:

[[ 1  2  3  9]
 [ 3  4  5 10]
 [ 6  7  8 11]]

请注意,您不能使用“concatenate”,因为数组具有不同的形状。 "hstack"将多维数组水平堆叠,因此它只在此处末尾添加一个新行。需要进行广播操作(“b [:,None]”),以使附加的向量是垂直的。

1
你可以这样做:

np.append(a,b.reshape(-1,1),axis=1)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接