Python 将三个二维纵断面转换为三维阵列

Python 将三个二维纵断面转换为三维阵列,python,numpy,multidimensional-array,Python,Numpy,Multidimensional Array,numpy中是否有将三个二维轮廓转换为三维阵列的锁定方法?其中x为直视图,y为水平视图,z为鸟瞰视图。其中,如果在3d空间中,x、y和z中的每个值都等于1,则保持值1,否则给出值0。所以在这个小例子中,我相信应该有108个唯一的值(9*12) i、 e.如果我们从x数组开始,在[0,0]处,值是1,在y[0,0]位置,值也是1,但是在z[0,0]处,值是0,因此xyz的3d数组应该是0在[0,0,0]处。使用相同的x和y位置,但将z更改为z[0,1]位置也是1的值,因此xyz位置[0,0,1]处

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


i、 e.如果我们从
x
数组开始,在
[0,0]
处,值是
1
,在
y[0,0]
位置,值也是
1
,但是在
z[0,0]
处,值是
0
,因此
xyz
的3d数组应该是
0
[0,0,0]
处。使用相同的
x
y
位置,但将
z
更改为
z[0,1]
位置也是
1
的值,因此
xyz
位置
[0,0,1]
处的三维数组应该是
1
。因此,从本质上说,创建矩形3D网格应该是一系列排列。

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

>>> 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]]])
>>> 
非常类似于:
>>> 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]]])
>>>