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