python numpy中setdiff1d的用法说明

作者:悲恋花丶无心之人 时间:2022-06-12 21:27:58 

一、函数解释


setdiff1d(ar1, ar2, assume_unique=False)

1.功能:找到2个数组中集合元素的差异。

2.返回值:在ar1中但不在ar2中的已排序的唯一值。

3.参数:

ar1:array_like 输入数组。

ar2:array_like 输入比较数组。

assume_unique:bool。如果为True,则假定输入数组是唯一的,即可以加快计算速度。 默认值为False。

二、具体示例

1.assume_unique = False的情况:


   a = np.array([1,2,3])
   b = np.array([4,5,6])
   c = np.setdiff1d(a, b)
   print(c)#[1 2 3]
   a = np.array([1,2,3])
   b = np.array([1,2,3])
   c = np.setdiff1d(a, b)
   print(c)#[]
   a = np.array([1,2,3])
   b = np.array([2,3,4])
   c = np.setdiff1d(a, b)
   print(c)#[1]
   a = np.array([1,2,3,4])
   b = np.array([3,4,5,6])
   c = np.setdiff1d(a, b)
   print(c)#[1 2]
   a = np.array([1,2,3,2,4,1])
   b = np.array([3,4,5,6])
   c = np.setdiff1d(a, b)
   print(c)#[1 2]
   a = np.array([8,2,3,2,4,1])
   b = np.array([7,4,5,6,3])
   c = np.setdiff1d(a, b)
   print(c)#[1 2 8]

可以从最后看出返回的值从小到大排序,并且唯一。(8在a的第1位,2在a中重复了2次)

2.assume_unique = True的情况:


   a = np.array([3,2,1])
   b = np.array([4,5,6])
   c = np.setdiff1d(a, b,True)
   print(c)#[3 2 1]
   a = np.array([8,2,3,2,4,1])
   b = np.array([7,4,5,6,3])
   c = np.setdiff1d(a, b,True)
   print(c)#[8 2 2 1]
   a = np.array([8,2,3,4,2,4,1])
   b = np.array([7,9,5,6,3])
   c = np.setdiff1d(a, b,True)
   print(c)#[8 2 4 2 4 1]

可以看出把在a中的但是不在b中的元素按a中的顺序排序,并且不合并重复的元素,即假定输入数组也是唯一的,因此相比于False确实提升了运算速度。

三、整体代码


import numpy as np
def main():
   a = np.array([1,2,3])
   b = np.array([4,5,6])
   c = np.setdiff1d(a, b)
   print(c)#[1 2 3]
   a = np.array([1,2,3])
   b = np.array([1,2,3])
   c = np.setdiff1d(a, b)
   print(c)#[]
   a = np.array([1,2,3])
   b = np.array([2,3,4])
   c = np.setdiff1d(a, b)
   print(c)#[1]
   a = np.array([1,2,3,4])
   b = np.array([3,4,5,6])
   c = np.setdiff1d(a, b)
   print(c)#[1 2]
   a = np.array([1,2,3,2,4,1])
   b = np.array([3,4,5,6])
   c = np.setdiff1d(a, b)
   print(c)#[1 2]
   a = np.array([8,2,3,2,4,1])
   b = np.array([7,4,5,6,3])
   c = np.setdiff1d(a, b)
   print(c)#[1 2 8]
   a = np.array([3,2,1])
   b = np.array([4,5,6])
   c = np.setdiff1d(a, b,True)
   print(c)#[3 2 1]
   a = np.array([8,2,3,2,4,1])
   b = np.array([7,4,5,6,3])
   c = np.setdiff1d(a, b,True)
   print(c)#[8 2 2 1]
   a = np.array([8,2,3,4,2,4,1])
   b = np.array([7,9,5,6,3])
   c = np.setdiff1d(a, b,True)
   print(c)#[8 2 4 2 4 1]

if __name__ == '__main__':
   main()

python numpy中setdiff1d的用法说明

补充:Python编程之numpy库函数in1d的使用

最近利用Python作数值分析时使用到numpy库下的in1d函数。in1d函数与excel中vlookup函数和MATLAB中ismember函数有相似之处。其作用在于在序列B中寻找与序列A相同的值,并返回一逻辑值(True,False)或逻辑值构成的向量。

具体例子见下文

设mask为逻辑值向量,矩阵x的第一列为待查找向量,d为被查询向量(或值),即查找x中与d中指定元素相同的值,并返回逻辑值向量mask。mask是由一系列True和False值构成,True代表找到相同的值,而False代表没找到相同的值。演示如下:


mask= np.in1d(x.values[:,1],d[1],invert=False) ##x为DataFrame型数据,x.values[:,1]表示取第二列值
x_temp=x[mask]

示取第二列值


x_temp=x[mask]

该例旨在查找 x 的第二列值中与d向量中第二个元素相同的部分 ,并返回mask逻辑向量;然后x_temp返回x中mask逻辑值为True的行。

mask向量的类型为bool,查看具体值下图所示:

python numpy中setdiff1d的用法说明

python numpy中setdiff1d的用法说明

值得注意的地方在于in1d函数中invert参数的设置。当invert=True时,mask中的元素值为True的部分对x.values[:,1]中与当前查找的元素d[i]不同的部分(i为当前查找位置),相同的部分则为false;当invert=False时,mask中的元素值为True的部分对x.values[:,1]中与当前查找的元素d[i]相同的部分(i为当前查找位置)。

演示见下图:

当mask= np.in1d(x.values[:,1],d[2],invert=True)

python numpy中setdiff1d的用法说明

当mask= np.in1d(x.values[:,1],d[2],invert=False)时

python numpy中setdiff1d的用法说明

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

来源:https://nickhuang1996.blog.csdn.net/article/details/89916399

标签:python,numpy,setdiff1d
0
投稿

猜你喜欢

  • Python3爬虫发送请求的知识点实例

    2023-04-17 19:16:32
  • goland -sync/atomic原子操作小结

    2024-04-26 17:20:08
  • XPath 1.0 学习笔记

    2009-02-25 12:19:00
  • python相对企业语言优势在哪

    2021-08-27 23:37:21
  • PHP数据类型之布尔型的介绍

    2023-11-14 21:56:00
  • 当视觉设计师遇上产品经理、开发工程师…[译]

    2010-01-17 10:18:00
  • Node.js学习入门

    2024-05-13 09:58:37
  • node.js支持多用户web终端实现及安全方案

    2024-05-05 09:22:10
  • ImageMagick FAQ 问题摘要

    2008-10-21 13:14:00
  • javascript 函数调用的对象和方法

    2010-07-02 12:25:00
  • Golang自旋锁的相关介绍

    2024-05-09 14:58:22
  • 通过cmd进入python的步骤

    2022-05-27 05:23:31
  • Python插入Elasticsearch操作方法解析

    2021-08-30 01:47:09
  • Scrapy 配置动态代理IP的实现

    2023-12-10 19:06:22
  • Python依赖包整体迁移方法详解

    2022-11-03 05:32:55
  • Python中函数的参数定义和可变参数用法实例分析

    2023-10-04 00:26:30
  • 用XML结合数据库,给服务器减负

    2007-10-31 09:40:00
  • python中property属性的介绍及其应用详解

    2022-09-26 03:21:36
  • 教你用python实现12306余票查询

    2021-03-16 01:39:19
  • Python实现字符串格式化输出的方法详解

    2023-05-02 20:52:59
  • asp之家 网络编程 m.aspxhome.com