【问题标题】:Concatenate np.arrays python连接 np.arrays python
【发布时间】:2019-03-11 04:15:21
【问题描述】:

如果出现以下情况,我该怎么办:

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

b = np.array([0,1])

我搜索连接ab,结果将是:

np.array([1,2,3,0],[5,6,7,1])

非常感谢

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    更numpythonic的方法是避免广播,并使用为此设计的函数:numpy.column_stack:

    np.column_stack([a, b])
    

    array([[1, 2, 3, 0],
           [5, 6, 7, 1]])
    

    【讨论】:

    • 哦,我不知道!它基本上是作为@Wen 的答案实现的。乐趣! :)
    • 是的,column_stack 是唯一一个将一维输入转换为二维列的堆叠函数(我相信),因此在这里完美运行。
    【解决方案2】:

    使用numpy 广播和concatenate

    np.concatenate([a,b[:,None]],1)
    Out[1053]: 
    array([[1, 2, 3, 0],
           [5, 6, 7, 1]])
    

    【讨论】:

      【解决方案3】:

      问题是水平连接ab 作为列向量。

      <concat>( |1 2 3|, |0| )
                |5 6 7|  |1|
      

      可以使用np.hstack 进行连接,b 可以通过添加新轴将converted 转换为列向量:

      >>> np.hstack([a, b[:, np.newaxis]])
      array([[1, 2, 3, 0],
             [5, 6, 7, 1]])
      

      【讨论】:

      • @Yuca:一维数组的行向量和列向量之间没有区别。参见例如stackoverflow.com/a/42908123/463796 了解更多信息。
      • @Yuca 你可以使用np.atleast_2d的转置:np.hstack([a, np.atleast_2d(b).T])
      猜你喜欢
      • 2021-12-31
      • 2018-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-23
      • 2017-08-05
      • 2011-10-11
      • 2020-05-30
      相关资源
      最近更新 更多