三个二维剖面到三维阵列

2024-05-19 03:02:43 发布

您现在位置:Python中文网/ 问答频道 /正文

numpy中是否有一种锁定方法可以将三个二维剖面转换为一个三维阵列?其中x是直视图,y是水平视图,z是鸟瞰图。如果在三维空间中,x、y和z的每个值都等于1,则保持值1,否则给出值0。所以在这个小例子中,我相信应该有108个唯一的值(9*12)。。。你知道吗

import numpy as np

x = np.array([[1, 1, 1],
              [0, 1, 1],
              [0, 1, 1]])

y = np.array([[1, 1, 1],
             [ 1, 1, 1],
             [ 0, 1, 1],
             [ 0, 0, 1]])

z = np.array([[0, 1, 1],
             [ 0, 1, 1],
             [ 0, 0, 1],
             [ 0, 0, 0]])

也就是说,如果我们从x数组开始,在[0, 0]处,值是1,在y[0,0]处,值也是1,但是在z[0, 0]处,值是0,所以xyz的3d数组应该是0[0,0,0]。使用xy的相同位置,但将z更改为z[0, 1]的位置也是1的值,因此[0, 0, 1]位置的xyz3d数组应该是1。因此,它应该是一个基本上创建一个矩形三维网格排列数。你知道吗


Tags: 方法importnumpy视图asnp水平数组
1条回答
网友
1楼 · 发布于 2024-05-19 03:02:43

您可以将广播和按位/逻辑操作结合起来执行此操作:

>>> x[np.newaxis, :, :] & y[:, np.newaxis, :] & z[:, :, np.newaxis]
array([[[0, 0, 0],
        [0, 1, 1],
        [0, 1, 1]],

       [[0, 0, 0],
        [0, 1, 1],
        [0, 1, 1]],

       [[0, 0, 0],
        [0, 0, 0],
        [0, 1, 1]],

       [[0, 0, 0],
        [0, 0, 0],
        [0, 0, 0]]])
>>> 

相关问题 更多 >

    热门问题