开发者社区> 问答> 正文

垂直连接两个NumPy数组

我尝试了以下方法:

a = np.array([1,2,3]) b = np.array([4,5,6]) np.concatenate((a,b), axis=0) array([1, 2, 3, 4, 5, 6]) np.concatenate((a,b), axis=1) array([1, 2, 3, 4, 5, 6]) 但是,我希望至少有一个结果像这样

array([[1, 2, 3], [4, 5, 6]]) 为什么它不是垂直连接的? 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-09 12:12:27 382 0
1 条回答
写回答
取消 提交回答
  • 因为a和b都只有一个轴,因为它们的形状是(3),所以axis参数专门指代要连接的元素的轴。

    该示例应阐明对concatenate轴的处理方式。取具有两个轴的两个向量,形状为(2,3):

    a = np.array([[1,5,9], [2,6,10]]) b = np.array([[3,7,11], [4,8,12]]) 沿第一个轴连接(第一个行,然后第二个行):

    np.concatenate((a,b), axis=0) array([[ 1, 5, 9], [ 2, 6, 10], [ 3, 7, 11], [ 4, 8, 12]]) 沿第二个轴连接(第一个列,然后第二个列):

    np.concatenate((a, b), axis=1) array([[ 1, 5, 9, 3, 7, 11], [ 2, 6, 10, 4, 8, 12]]) 要获得您呈现的输出,可以使用 vstack

    a = np.array([1,2,3]) b = np.array([4,5,6]) np.vstack((a, b)) array([[1, 2, 3], [4, 5, 6]]) 您仍然可以使用进行操作concatenate,但是您需要先对其进行重塑:

    np.concatenate((a.reshape(1,3), b.reshape(1,3))) array([[1, 2, 3], [4, 5, 6]]) 最后,如评论中所建议,重塑它们的一种方法是使用newaxis:

    np.concatenate((a[np.newaxis,:], b[np.newaxis,:]))

    2020-02-09 12:12:45
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载