【问题标题】:Concatenating 2 dimensional numpy arrays in Python在 Python 中连接二维 numpy 数组
【发布时间】:2021-07-10 13:44:28
【问题描述】:

我想连接这两个数组

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

尝试使用附加

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,)

(stackoverflow 的新手,如果我没有正确格式化,请见谅)

【问题讨论】:

标签: python arrays concatenation numpy-ndarray


【解决方案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]),以便附加向量是垂直向量。

【讨论】:

    【解决方案2】:

    你可以这样做:

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

    【讨论】:

      猜你喜欢
      • 2017-08-18
      • 1970-01-01
      • 2015-07-30
      • 2018-01-29
      • 2020-11-13
      • 2016-07-04
      • 2011-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多