2017-03-01 155 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]