三维2d配置文件到3d阵列

时间:2014-05-01 14:05:05

标签: python numpy multidimensional-array

numpy中是否有可用于将三个2d配置文件转换为3d数组的放样方法?其中x是直视图,y是水平视图,z是鸟瞰图。因此,如果在3d空间中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的{​​{1}}数组开始,其值为[0, 0],则位置1的值也是y[0,0]但是1值为z[0, 0],因此0的3d数组应为xyz 0。使用[0,0,0]x的相同位置但将y更改为位置z的值为z[0, 1]以及1 3d数组位置xyz应为[0, 0, 1]。所以它应该是一些基本上创建矩形3D网格的排列。

1 个答案:

答案 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]]])
>>>