倒置花式索引

gca*_*tes 4 python numpy scipy

使用花式索引具有该阵列的数组和掩码,很容易仅选择与掩码对应的数组的数据.

import numpy as np

a = np.arange(20).reshape(4, 5)
mask = [0, 2]
data = a[:, mask]
Run Code Online (Sandbox Code Playgroud)

但是有没有快速的方法来选择不属于掩码的阵列的所有数据(即掩码是我们要拒绝的数据)?我试图找到一个通过中间布尔数组的通用解决方案,但我确信有一些东西真的很容易.

mask2 = np.ones(a.shape)==1
mask2[:, mask]=False
data = a[mask2].reshape(a.shape[0], a.shape[1]-size(mask))
Run Code Online (Sandbox Code Playgroud)

谢谢

Joe*_*ton 6

看一看numpy.invert,numpy.bitwise_not,numpy.logical_not,或更简洁~mask.(在这种情况下,它们都做同样的事情.)

作为一个简单的例子:

import numpy as np

x = np.arange(10)
mask = x > 5

print x[mask]
print x[~mask]
Run Code Online (Sandbox Code Playgroud)