2017-03-01 194 views
0

說我有一個三維numpy的數組:使用提取從3D numpy的陣列1D陣列2D布爾

i, j, k = 10, 3, 4 

arr = np.arange(120).reshape(i, j, k) 

和2D布爾數組:

mask = np.random.random((j, k)) > 0.5 

n = mask.sum() 

我希望能夠提取1D沿着其第一維從arr開始的陣列,其對應於maskTrue值。結果應該有形狀,(i, n)。這怎麼能做到?

我拉了一些舊代碼,並由於某種原因,我在做arr[mask]但這給出了(n, k)形狀(我不知道爲什麼),並警告:

VisibleDeprecationWarning: boolean index did not match indexed array along dimension 0; dimension is 10949 but corresponding boolean dimension is 11 
+0

發佈的解決方案是否適合您? – Divakar

+0

是的,謝謝!這現在很有意義。 – pbreach

回答

1

沿最後兩個簡單的面膜軸 -

arr[:,mask]