【问题标题】:Append 2D array to 3D array, extending third dimension将 2D 数组附加到 3D 数组,扩展第三维
【发布时间】:2016-03-25 06:44:15
【问题描述】:

我有一个数组A,其形状为(480, 640, 3),还有一个数组B,其形状为(480, 640)

如何将这两个附加为一个形状为(480, 640, 4) 的数组?

我尝试了np.append(A,B),但它没有保持尺寸,而axis 选项导致ValueError: all the input arrays must have same number of dimensions

【问题讨论】:

    标签: python arrays numpy append


    【解决方案1】:

    使用np.stack 应该可以 但问题是两个数组都应该是 2D 形式的。

    np.stack([A,B])

    【讨论】:

      【解决方案2】:

      使用dstack:

      >>> np.dstack((A, B)).shape
      (480, 640, 4)
      

      这处理了数组具有不同维数并沿第三轴堆叠数组的情况。

      否则,要使用appendconcatenate,您必须自己制作B 三维并指定要加入它们的轴:

      >>> np.append(A, np.atleast_3d(B), axis=2).shape
      (480, 640, 4)
      

      【讨论】:

      • 或者使用最基本的方法:np.concatenate(A, B[...,None], axis=2)
      • @hpaulj 出现错误TypeError: concatenate() takes at most 2 arguments (3 given)
      • @piepi,你看过concatenate 文档吗?他们优先于我的旧 cmets。无论如何,我应该写np.concatenate([A, B[...,None]], axis=2)。也就是把数组放到一个列表中
      • @piepi,你看过concatenate 文档吗?他们优先于我的旧 cmets。无论如何,我应该写np.concatenate([A, B[...,None]], axis=2)。也就是把数组放到一个列表中
      猜你喜欢
      • 2019-08-20
      • 1970-01-01
      • 2019-05-09
      • 2016-01-15
      • 1970-01-01
      • 2017-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多