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网格的排列。
答案 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]]])
>>>