python numpy中setdiff1d的用法说明


Posted in Python onApril 22, 2021

一、函数解释

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的用法说明

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

Python 相关文章推荐
Python中使用第三方库xlutils来追加写入Excel文件示例
Apr 05 Python
Python中的pygal安装和绘制直方图代码分享
Dec 08 Python
Python语言描述机器学习之Logistic回归算法
Dec 21 Python
python中的插值 scipy-interp的实现代码
Jul 23 Python
Python之lambda匿名函数及map和filter的用法
Mar 05 Python
python使用adbapi实现MySQL数据库的异步存储
Mar 19 Python
Django Sitemap 站点地图的实现方法
Apr 29 Python
python中数组和矩阵乘法及使用总结(推荐)
May 18 Python
python实现网站用户名密码自动登录功能
Aug 09 Python
python+Django实现防止SQL注入的办法
Oct 31 Python
Keras实现支持masking的Flatten层代码
Jun 16 Python
基于Python实现对比Exce的工具
Apr 07 Python
一行代码python实现文件共享服务器
Apr 22 #Python
python数据分析之用sklearn预测糖尿病
python文件名批量重命名脚本实例代码
python爬虫之爬取笔趣阁小说
python获取淘宝服务器时间的代码示例
Apr 22 #Python
详解Django中 render() 函数的使用方法
python tkinter实现定时关机
You might like
php 求质素(素数) 的实现代码
2011/04/12 PHP
php缓存技术详细总结
2013/08/07 PHP
php版本的cron定时任务执行器使用实例
2014/08/19 PHP
PHP函数extension_loaded()用法实例
2015/01/19 PHP
php实现四舍五入的方法小结
2015/03/03 PHP
PHP+JavaScript实现无刷新上传图片
2017/02/21 PHP
[原创]php正则删除html代码中class样式属性的方法
2017/05/24 PHP
PHP PDOStatement::bindValue讲解
2019/01/30 PHP
PHP实现页面静态化深入讲解
2021/03/04 PHP
JavaScript异步调用定时方法并停止该方法实现代码
2012/03/16 Javascript
ajax中get和post的说明及使用与区别
2012/12/23 Javascript
javascript原型链继承用法实例分析
2015/01/28 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(一)之数据支持json字符串、list集合
2016/08/11 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
2016/10/01 Javascript
Bootstrap3下拉菜单的实现
2017/02/22 Javascript
JavaScript Uploadify文件上传实例
2017/02/28 Javascript
bootstrap的常用组件和栅格式布局详解
2017/05/02 Javascript
JavaScript输入框字数实时统计更新
2017/06/17 Javascript
vue router路由嵌套不显示问题的解决方法
2017/06/17 Javascript
详解使用angular的HttpClient搭配rxjs
2017/09/01 Javascript
JavaScript编程设计模式之观察者模式(Observer Pattern)实例详解
2017/10/25 Javascript
angularjs实现table增加tr的方法
2018/02/27 Javascript
基于Vue 服务端Cookies删除的问题
2018/09/21 Javascript
Vue CLI4 Vue.config.js标准配置(最全注释)
2020/06/05 Javascript
全面解析JavaScript Module模式
2020/07/24 Javascript
Python入门篇之正则表达式
2014/10/20 Python
Windows平台Python连接sqlite3数据库的方法分析
2017/07/12 Python
Python Json模块中dumps、loads、dump、load函数介绍
2018/05/15 Python
对Python中 \r, \n, \r\n的彻底理解
2020/03/06 Python
Python ArgumentParse的subparser用法说明
2020/04/20 Python
CSS3实现缺角矩形,折角矩形以及缺角边框
2019/12/20 HTML / CSS
2016年大学生实习单位评语
2015/12/01 职场文书
2016年感恩教师节校园广播稿
2015/12/18 职场文书
《狼牙山五壮士》读后感:宁死不屈,视死如归
2019/08/16 职场文书
《哪吒之魔童降世》观后感:世上哪有随随便便的成功
2019/11/08 职场文书
python办公自动化之excel的操作
2021/05/23 Python