首页 > 解决方案 > Python 3.x 使用 2D 切片创建 3D 体积

问题描述

Python 3.x

我有 for 循环,它正在进行一些计算并创建一个 Slice/2D 数组,让我们说(x = 3,y = 3)每次迭代,我希望同时在同一个 for 循环中(追加?/堆栈)它们在一个第三维度。

我一直在尝试使用 Numpy stack、vstack、hstack、dstack,但我仍然不知道如何在第三维中将它们组合在一起。

所以我想让他们结束这样的事情:

(z = 10, x = 3, y = 3)

array([ [[0., 0., 0.],
         [0., 0., 0.],
         [0., 0., 0.]],

        [[1., 1., 1.],
         [1., 1., 1.],
         [1., 1., 1.]], 

        [[2., 2., 2.],
         [2., 2., 2.],
         [2., 2., 2.]],

        .
        .
        .

                     ])

谢谢,

标签: pythonarraysnumpy3dslice

解决方案


你可以这样做

arrays = []
for i in range(5):
    arr = np.full((3,3), i)
    arrays.append(arr)

np.asarray(arrays)

如果你愿意,你可以在循环内执行 np.asarray(arrays) 。但这不会很有效。但这np.concatenate也不会有效地创建新的 numpy 数组,因此效率会相似。在循环外执行这些操作会更好


推荐阅读