您可以使用bool
可以产生的索引数组np.in1d
。
您可以使用所需的np.ndarray
任意值对a进行索引axis
,例如使用bool
s数组来指示是否应包含元素。由于您要沿索引axis=0
,这意味着您要从最远的索引中进行选择,因此需要具有1D,np.array
其长度为行数。它的每个元素都将指示是否应包含该行。
一种快速的方法是np.in1d
在的第二列上使用a
。您可以通过获得该列的所有元素a[:, 1]
。现在,您有了一个1Dnp.array
,应该根据您的过滤器检查其元素。那np.in1d
是为了什么。
因此完整的代码如下所示:
import numpy as np
a = np.asarray([[2,'a'],[3,'b'],[4,'c'],[5,'d']])
filter = np.asarray(['a','c'])
a[np.in1d(a[:, 1], filter)]
或更长的形式:
import numpy as np
a = np.asarray([[2,'a'],[3,'b'],[4,'c'],[5,'d']])
filter = np.asarray(['a','c'])
mask = np.in1d(a[:, 1], filter)
a[mask]