当前位置:   article > 正文

python数据分析numpy基础之intersect1d求数组交集

python数据分析numpy基础之intersect1d求数组交集

1 python数据分析numpy基础之intersect1d求数组交集

python的numpy库的intersect1d(x,y)函数,计算x和y的公共元素,并返回去重后的有序结果。相当于求两个数组中的交集,并且进行去重和排序。

用法

numpy.intersect1d(ar1, ar2, assume_unique=False, return_indices=False)
  • 1

描述

numpy.intersect1()查找两个数组的公共元素,并且返回去重后的有序结果。

入参

ar1,ar2:必选,列表、元组、数组;如果是多维则自动转一维数组;

assume_unique:可选,bool,默认False,若为True则可以加快计算素材,此时ar1和ar2需为元素唯一的数组,否则结果不会去重;

return_indices:可选,bool,默认False,若为True则返回公共元素在ar1和ar2的索引,如果存在多个相同的值,则返回第一个值查询的索引。

1.1 入参ar1和ar2

numpy. intersect1d()的入参ar1和ar2,为必选入参,可以为数组、列表、元组。如果是多维数组,将会转换为一维数组后,进行处理。

>>> import numpy as np
# intersect1d()返回两个数组的公共元素,并且去重和排序
# 入参ar1/ar2为列表
>>> np.intersect1d([1,2,3,5,2],[6,5,2,1,5])
array([1, 2, 5])
# 入参ar1/ar2为元组
>>> np.intersect1d((1,2,3,5,2),(6,5,2,1,5))
array([1, 2, 5])
# 入参ar1/ar2为数组
>>> np.intersect1d(np.array((1,2,3,5,2)),np.array((6,5,2,1,5)))
array([1, 2, 5])
# 入参ar1/ar2为二维数组转为一维数组,再求公共元素并去重排序
>>> np.intersect1d([[3,5,2,6],[0,2,5,8]],[[1,3,5,9],[0,2,6,8]])
array([0, 2, 3, 5, 6, 8])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

1.2 入参assume_unique

numpy. intersect1d()的入参assume_unique,为可选入参,布尔类型,默认为False。如果为True可以加快计算速度,并且需要ar1和ar2的元素不重复,否则找到的公共元素会存在重复元素的结果。

>>> import numpy as np
# 入参ar1/ar2有重复元素2和5,assume_unique为True,结果不去重
>>> np.intersect1d([1,2,3,5,2],[6,5,2,1,5],True)
array([1, 2, 2, 5, 5])
>>> np.intersect1d([1,2,3,5,2],[6,5,2,1,5],False)
array([1, 2, 5])
# 入参ar1/ar2无重复元素2和5,assume_unique为True,结果元素不重复
>>> np.intersect1d([1,2,3,5],[6,2,1,5],True)
array([1, 2, 5])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

1.3 入参return_indices

numpy. intersect1d()的入参return_indices,为可选入参,布尔类型,默认为False。若为True,返回公共元素在两个数组ar1和ar2的索引值,若存在多个相同的值,返回第1次出现的索引。

>>> import numpy as np
# return_indices=True,则返回公共元素在两个数组ar1和ar2的索引
# 多个相同值,则返回第一次出现的索引
>>> np.intersect1d([1,2,3,5,2],[6,5,2,1,5],return_indices=True)
(array([1, 2, 5]), array([0, 1, 3], dtype=int64), array([3, 2, 1], dtype=int64))
  • 1
  • 2
  • 3
  • 4
  • 5
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/596713
推荐阅读
相关标签
  

闽ICP备14008679号