2013-10-25 75 views
1

我正在尋找一種基於立方體的兩個相對端點(a=(x1,y1,z1) and b=(x2,y2,z2))創建3D網格的方法。每個維度的步長爲1。 剛剛發現一些以(0,0,0)開頭的numpy fcts,在我的情況下,雖然起點是可變的並且是負數(例如(-5,-10,-15))。從相反的矢量座標創建3D網格

+0

是否總是說'X1

+0

是,例如起點a =(-5,-10,-15)。對面b =(10,20,30)。網格應該像g = [(-5,-10,-15),(-5,-10,-14),...] – dax5

回答

0

列表解讀FTW!

xRng = range(a[0],b[0]+1) 
yRng = range(a[1],b[1]+1) 
zRng = range(a[2],b[2]+1) 
g = [(a,b,c) for a in xRng for b in yRng for c in zRng] 
+0

當然,如果你不想一路去' (10,20,30)''你可以放棄'+ 1',這會去'(9,19,29)' –

+0

Thx!我開始自己實現網格,除了列表理解之外,基本上就像你一樣。以爲會有一個numpy fct。它只是提供端點作爲參數... thx再次爲您的幫助 – dax5

+0

有可能是一個numpy函數,但我不知道它。如果有幫助,請隨時註冊或接受我的回答。 –

1

使用np.ogrid(或者,如果你想有一個密集的網格np.mgrid):

>>> x1, y1, z1 = -4, -3, -2 
>>> x2, y2, z2 = 4, 3, 2 
>>> np.ogrid[x1:x2, y1:y2, z1:z2] 
[array([[[-4]], 

     [[-3]], 

     [[-2]], 

     [[-1]], 

     [[ 0]], 

     [[ 1]], 

     [[ 2]], 

     [[ 3]]]), 
array([[[-3], 
     [-2], 
     [-1], 
     [ 0], 
     [ 1], 
     [ 2]]]), 
array([[[-2, -1, 0, 1]]])]