使用值列表的 Numpy

Numpy where using a list of values

如果我想为多个值的 numpy 数组创建一个过滤器,我该如何编写。

比如说我想做这个...

clusters = np.array([4, 570, 56, 2, 5, 1, 1, 570, 32, 1])
fiveseventy_idx = np.where((clusters == 1) | (clusters == 570 ))
clusters = clusters[ fiveseventy_idx ]

在上述情况下,我只想要 2 个项目,但说我有一个更大的数组,我想过滤 n 个项目,我不明白这是怎么回事如果我从原始数组中说出我想要的 300 个项目,则可以使用此语法完成。

如果您要在 clusters 中搜索一系列值,则可以使用 np.isin:

>>> targets = [1, 570]  # Also could be: np.array([1, 570])
>>> np.isin(clusters, targets)
array([False,  True, False, False, False,  True,  True,  True, False,                       True]) 
>>> clusters[np.isin(clusters, targets)]
array([570,   1,   1, 570,   1])