2014-05-01 109 views
1

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

即如果我們[0, 0]x陣列啓動值1,在y[0,0]位置值也是1但在z[0, 0]0所以xyz三維陣列應該是0[0,0,0]。使用的xy相同的位置,但改變z定位z[0, 1]1的值以及因此在位置[0, 0, 1]xyz 3D陣列應1。所以它應該是一些基本上創建矩形3D網格的排列組合。

+1

非常相似:創建三維對象出3次(http://stackoverflow.com/questions/19291532/create -3d-對象外的3-視圖) – YXD

回答

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