如何使用另一个数组的值过滤numpy数组?

Mic*_*ers 18 python arrays numpy filter

我有两个NumPy数组,例如:

a = [1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)

和过滤器数组,例如:

f = [False, True, False, False, True]

len(a) == len(f)
Run Code Online (Sandbox Code Playgroud)

如何才能获得一个新的numpy数组,其中只有相同索引的f值为True?就我而言:[2, 5].

根据公认的解决方案(具有不同的值):

>>> a = numpy.array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10])
>>> b = numpy.array([True, False, True, False, True, False, True, False, True, False])
>>> a[b]
array([1, 3, 5, 7, 9])
Run Code Online (Sandbox Code Playgroud)

YXD*_*YXD 29

NumPy支持布尔索引

a[f]
Run Code Online (Sandbox Code Playgroud)

这假设是 afNumPy数组而不是Python列表(如问题中所示).你可以转换f = np.array(f).

  • 确保`b`是一个numpy数组.更新了答案. (2认同)