在新维度堆叠数组(numpy)

时间:2018-01-07 20:34:20

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

假设我有三个数组

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,但那并没有给我我想要的东西。任何有关这方面的帮助将非常感激。谢谢。

1 个答案:

答案 0 :(得分: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]]])