【问题标题】:Stacking arrays in new dimension (numpy)以新维度堆叠数组(numpy)
【发布时间】:2018-06-16 21:34:30
【问题描述】:

假设我有三个数组

k = np.array([[1,1],[2,2]])
m = np.array([[3,3],[4,4]])
n = np.array([[5,5],[6,6]])

理想情况下,我想获得一个形状为 (3,2,2) 的最终数组,即

array([[[1, 1],
        [2, 2]],

       [[3, 3],
        [4, 4]]

       [[5, 5],
        [6, 6]]])

原来如此

l = np.stack((k,m), axis=0)

得到一个数组

array([[[1, 1],
        [2, 2]],

       [[3, 3],
        [4, 4]]])

大小为 (2,2,2)。但是,当我尝试附加/堆叠 n 数组时,我总是得到错误维度的错误。我可以做 np.dstack 但这并没有给我我想要的。对此的任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 在相同的堆栈操作中使用(k,m,n)
  • np.stack((k, m, n), axis=0) 为我工作。
  • np.array([k,m,n])
  • 行得通,谢谢大家。

标签: python arrays numpy image-processing deep-learning


【解决方案1】:

为了完整起见并结束这个问题,Akavall 和 f5r5e5d 建议的答案都是可行的解决方案。

# Akavall's solution
np.stack((k, m, n), axis=0)

# f5r5e5d's solution
np.array([k,m,n])

# my approach
In [38]: np.concatenate((k[None, :, :], m[None, :, :], n[None, :, :]))
Out[38]: 
array([[[1, 1],
        [2, 2]],

       [[3, 3],
        [4, 4]],

       [[5, 5],
        [6, 6]]])

【讨论】: