numpy.in1d

原文:https://docs.scipy.org/doc/numpy/reference/generated/numpy.in1d.html

译者:飞龙 UsyiyiCN

校对:(虚位以待)

numpy.in1d(ar1, ar2, assume_unique=False, invert=False)[source]

测试1-D数组的每个元素是否也存在于第二个数组中。

返回与ar1相同的长度为True的布尔数组,其中ar1的元素在ar2中为真,否则为False。

参数:

ar1:(M,)array_like

输入数组。

ar2:array_like

用于测试ar1的每个值的值。

assume_unique:bool,可选

如果为真,则输入数组都被假定为唯一的,这可以加速计算。默认值为False。

反转:bool,可选

如果为True,则返回的数组中的值被反转(即,其中ar1的元素在ar2中为False,否则为True)。默认值为False。np.in1d(a, b, invert=True) is equivalent to (but is faster than) np.invert(in1d(a, b)).

版本1.8.0中的新功能。

返回:

in1d:(M,)ndarray,bool

ar1 [in1d]ar2中。

也可以看看

numpy.lib.arraysetops
具有用于对数组执行设置操作的多个其他功能的模块。

笔记

in1d可以被视为1-D序列中的中的python关键字的元素级函数版本。in1d(a, b) is roughly equivalent to np.array([item in b for item in a]). 但是,如果ar2是一个集合或类似(非序列)容器,则此构思失败:As 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], dtype=bool)
>>> test[mask]
array([0, 2, 0])
>>> mask = np.in1d(test, states, invert=True)
>>> mask
array([False,  True, False,  True, False], dtype=bool)
>>> test[mask]
array([1, 5])