numpy.in1d
numpy.in1d(ar1, ar2, assume_unique=False, invert=False) [source]
测试1-D数组的每个元素是否也出现在第二个数组中。
返回一个与ar1长度相同的布尔数组,该数组为true,其中ar1的元素位于ar2中,否则为False。
我们建议对新代码使用isin
而不是in1d
。
参数 : | ar1 :(M,) array_like 输入数组。 ar2 :array_like 用于测试ar1的每个值的值。 assume_unique : 如果为True,则假定输入数组都是唯一的, 这可以加快计算速度。 默认值为 invert : 如果为True,则返回的数组中的值将被反转 (即,在ar1中的一个元素位于ar2中时为False,否则为 默认值为 等效于(但比 1.8.0版中的新功能。 |
返回值 : | in1d :(M,) ndarray, bool 值 |
Notes
对于1-D序列,in1d
可被视为python关键字in的逐元素函数版本。in1d(a,b)
大致等同于np.array([item in b for item in
a])
。 但是,如果ar2
是一个集合或类似的(非序列)容器,则此方法将失败:ar2
被转换为数组,在这种情况下为asarray( ar2)
是一个对象数组,而不是包含值的预期数组。
1.4.0版的新功能。
例子
>>> test = np.array([0, 1, 2, 5, 0]) >>> states = [0, 2] >>> mask = np.in1d(test, states) >>> mask array([ True, False, True, False, True]) >>> test[mask] array([0, 2, 0]) >>> mask = np.in1d(test, states, invert=True) >>> mask array([False, True, False, True, False]) >>> test[mask] array([1, 5])