1 python数据分析numpy基础之in1d检查数组元素是否在另一数组中
python的numpy库的in1d(x,y)函数,检查数组x的元素是否在另一数组y中,并返回一个长度与x相等的布尔数组。
用法
numpy.in1d(ar1, ar2, assume_unique=False, invert=False, *, kind=None)
描述
numpy.in1d(ar1,ar2),判断ar1的元素是否在ar2中,并返回一个长度与ar2相等的布尔数组,如果ar1的元素在ar2中,则为True,否则为False。
入参
ar1,ar2:必选,列表、元组、数组;如果是多维则自动转一维数组;
assume_unique:如果ar1和ar2的元素唯一不重复,则设置为True,可以加快计算速度;
invert:如果为True,则将返回数组的值反转,即如果ar1的元素在ar2中,则返回False,否则返回True。
1.1 入参ar1和ar2
numpy.in1d(ar1,ar2)的入参ar1和ar2,为必选入参,可以为数组、列表、元组。如果是多维数组,将会转换为一维数组后,进行处理。
若ar1的元素在ar2中,则返回True,否则返回False。
>>> import numpy as np
# in1d(x,y)若x的元素在y中则返回True,否则返回False
# x,y 为列表
>>> np.in1d([0,2,3,6,2],[2,3])
array([False, True, True, False, True])
# x,y 为元组
>>> np.in1d((0,2,3,6,2),(2,3))
array([False, True, True, False, True])
# x,y 为数组
>>> np.in1d(np.array((0,2,3,6,2)),np.array((2,3)))
array([False, True, True, False, True])
# x,y 为多维数组,自动转为一维数组后判断
>>> np.in1d([[0,2,1],[6,2,5]],[[2,3],[1,9]])
array([False, True, True, False, True, False])
1.2 入参assume_unique
numpy. in1d()的入参assume_unique,为可选入参,布尔类型,默认为False。如果输入数组的元素是唯一不重复的,则可以设置为True,可以加快计算速度。
>>> import numpy as np
# 如果ar1和ar2的元素唯一不重复,则assume_unique设置为True,可加快计算速度
>>> np.in1d([0,2,3,6,2,3],[2,3],assume_unique=True)
array([False, True, True, False, True, True])
>>> np.in1d([0,2,3,6,2,3],[2,3],assume_unique=False)
array([False, True, True, False, True, True])
1.3 入参invert
numpy. in1d()的入参invert,为可选入参,布尔类型,默认为False。如果为True,则将返回数组中的值反转,即如果ar1的元素在ar2中,则返回False,否则返回True。
>>> import numpy as np
# invert如果为True,则将返回数组中的值反转,
# 即如果ar1的元素在ar2中,则返回False,否则返回True。
>>> np.in1d([0,2,3,6,2,3],[2,3],invert=True)
array([ True, False, False, True, False, False])
>>> np.in1d([0,2,3,6,2,3],[2,3],invert=False)
array([False, True, True, False, True, True])