【问题标题】:Python 3.x create 3D Volume with 2D slicesPython 3.x 使用 2D 切片创建 3D 体积
【发布时间】:2020-01-21 09:09:23
【问题描述】:

Python 3.x

我有 for 循环,它正在进行一些计算并创建一个切片/二维数组,让我们说 (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.]],

        .
        .
        .

                     ])

谢谢,

【问题讨论】:

  • 制作二维数组列表,然后将列表传递给np.stack
  • 谢谢,这正是我需要的。在循环内我将它们附加到一个列表中,然后在循环外我做了 np.stack(lnew_list, axis = 0)。只是为了澄清!你知道引擎盖下发生了什么吗?那 np.stack 正在处理一个列表

标签: python arrays numpy 3d slice


【解决方案1】:

你可以这样做

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

np.asarray(arrays)

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

【讨论】:

    猜你喜欢
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 2016-04-18
    • 1970-01-01
    • 2016-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多