2014-02-10 16 views
0

我有3個numpy.ndarray命名爲verticesbcoordstet,具有以下shapePython中,操縱nd.arrays:合併,替換數據

vertices (1965, 4, 6) 
tet   (1048576,)  
bcoords  (1048576, 4) 

我要訪問的數據在ndarrays使一些操作。

_

tet包含數字(索引)引用該值在vertices

值序列中tetbcoords是相同


EDIT2:

vertices (1965, 4, 6) 

個在vertices的值是1965單純形,由4點所限定,每個point6R, G, B, X, Y, Z

的單純使用在每個point

tet   (1048576,)  
bcoords  (1048576, 4) 

值的X, Y, Z座標的Delaunay三角計算定義tet是簡單的索引。它們由(結構:X, Y, Z)製成。 A target可能或可能不包含在其中一個單式中。

如果目標是在一個單一的,TET包含了1965年的指標之一,如果不是,tet包含值-1

bcoords的值是target


列表的重心座標

我想通過tetbcoords(或更好地通過兩個在同一時間)循環,這將使我vertices(即如果tet回報10我想要得到的陣列vertices)10日值,並在同一時間,我想獲得在4個對應的值bcoords


編輯:

我寫「如果tet回報10我想要得到的陣列vertices 10日值」

我的意思的vertices 10日row中,它包含的數據,這裏有一些樣本:

print tet給出:

[1758 1758 1758 ..., 33 33 33] 

指數

print vertices[1758]的列表給出:

[[ 63.   0.   63.   4.56112396 3.97230907 
    5.22919258] 
[ 0.   0.   95.   4.05451235 4.07627874 
    7.38992147] 
[ 63.   0.   0.   5.91857152 5.28300682 
    4.5745692 ] 
[ 0.   63.   63.   4.20672279 5.43250873 
    6.32627709]] 

4分


列表

我該怎麼做?

  • 我應該合併tetbcoords?如果是的話,我該怎麼做?

    或者有什麼方法可以同時循環2個數組嗎?

  • 如何用vertices中包含的值替換tet(即vertices中的值的索引)的值?

  • 這是Pandas存在的原因之一,如果是的話,如何在這種特殊情況下使用它?

感謝

+1

你應該解釋如何在'tet'索引'vertices'的數字。你說_if tet返回10我想獲得數組頂點的第10個值,但是不清楚3維數組的第10個值是什麼意思。 –

+0

@DanielMahler謝謝你,我添加了一個編輯來闡明你的觀點 –

+1

tet中的值是什麼,頂點的值是什麼,頂點的值是什麼?他們走到一起並沒有明確的方式,只是打印出數字並不是非常有幫助。 –

回答

0

如果你有足夠的內存,只使用花哨的索引:

mask = tet != -1 
tet2 = tet[mask] 
bcoords2 = bcoords[mask, :] 
vertices2 = vertices[tet2]