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 相关文章推荐
Python3.6简单操作Mysql数据库
Sep 12 Python
详解如何用OpenCV + Python 实现人脸识别
Oct 20 Python
Mac中Python 3环境下安装scrapy的方法教程
Oct 26 Python
Python实现Kmeans聚类算法
Jun 10 Python
PyTorch线性回归和逻辑回归实战示例
May 22 Python
Python引用计数操作示例
Aug 23 Python
Python 获取中文字拼音首个字母的方法
Nov 28 Python
pandas每次多Sheet写入文件的方法
Dec 10 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
Aug 21 Python
Django Model中字段(field)的各种选项说明
May 19 Python
基于Python制作一副扑克牌过程详解
Oct 19 Python
Python中过滤字符串列表的方法
Dec 22 Python
一行代码python实现文件共享服务器
Apr 22 #Python
python数据分析之用sklearn预测糖尿病
python文件名批量重命名脚本实例代码
python爬虫之爬取笔趣阁小说
python获取淘宝服务器时间的代码示例
Apr 22 #Python
详解Django中 render() 函数的使用方法
python tkinter实现定时关机
You might like
用PHP实现文件上传二法
2006/10/09 PHP
php代码中使用换行及(\n或\r\n和br)的应用
2013/02/02 PHP
fetchAll()与mysql_fetch_array()的区别详解
2013/06/05 PHP
使用GD库生成带阴影文字的图片
2015/03/27 PHP
Apache启动报错No space left on device: AH00023该怎么解决
2015/10/16 PHP
php实现批量修改文件名称的方法
2016/07/23 PHP
php正则判断是否为合法身份证号的方法
2017/03/16 PHP
PHP实现将标点符号正则替换为空格的方法
2017/08/09 PHP
PHP递归实现汉诺塔问题的方法示例
2017/11/25 PHP
Aster vs KG BO3 第三场2.19
2021/03/10 DOTA
如何实现浏览器上的右键菜单
2006/07/10 Javascript
jquery调用wcf并展示出数据的方法
2011/07/07 Javascript
JS上传图片前的限制包括(jpg jpg gif及大小高宽)等
2012/12/19 Javascript
js获取当前页面路径示例讲解
2014/01/08 Javascript
HTML5 canvas 9绘制图片实例详解
2016/09/06 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
2017/11/11 Javascript
ReactNative中使用Redux架构总结
2017/12/15 Javascript
vue使用v-for实现hover点击效果
2018/09/29 Javascript
原生js实现的金山打字小游戏(实例代码详解)
2020/03/16 Javascript
Python def函数的定义、使用及参数传递实现代码
2014/08/10 Python
python制作花瓣网美女图片爬虫
2015/10/28 Python
Pycharm编辑器技巧之自动导入模块详解
2017/07/18 Python
Python实现的简单线性回归算法实例分析
2018/12/26 Python
Django使用 Bootstrap 样式修改书籍列表过程解析
2019/08/09 Python
Linux下升级安装python3.8并配置pip及yum的教程
2020/01/02 Python
python读取配置文件方式(ini、yaml、xml)
2020/04/09 Python
Python使用Numpy模块读取文件并绘制图片
2020/05/13 Python
Python3读写ini配置文件的示例
2020/11/06 Python
三星印度官网:Samsung印度
2019/08/03 全球购物
小蚁科技官方商店:YI Technology
2019/08/23 全球购物
保护环境倡议书500字
2014/05/19 职场文书
四风问题对照检查整改措施思想报告
2014/10/05 职场文书
2014年党风廉政工作总结
2014/12/03 职场文书
增值税发票丢失证明
2015/06/19 职场文书
怎样做好公众演讲能力?
2019/08/28 职场文书
纯html+css实现打字效果
2021/08/02 HTML / CSS