Python numpy.in1d函数方法的使用

NumPy(Numerical Python的缩写)是一个开源的Python科学计算库。使用NumPy,就可以很自然地使用数组和矩阵。NumPy包含很多实用的数学函数,涵盖线性代数运算、傅里叶变换和随机数生成等功能。本文主要介绍一下NumPy中in1d方法的使用。

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_uniquebool, 可选

如果为True,则假定输入数组都是唯一的,

这可以加快计算速度。 默认值为False

invertbool, 可选

如果为True,则返回的数组中的值将被反转

(即,在ar1中的一个元素位于ar2中时为False,否则为True)。

 默认值为Falsenp.in1d(a,b,invert = True)

等效于(但比np.invert(in1d(a,b))更快。

 1.8.0版中的新功能。

返回值 :

in1d(M,) ndarray, bool

ar1[in1d]在ar2中。

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])
推荐阅读
cjavapy编程之路首页