numpy中setdiff1d函数的功能是什么,如何使用?
Admin 2021-11-24 群英技术资讯 1493 次浏览
这篇文章我们来了解一下Python numpy中setdiff1d函数的相关内容,下文介绍了setdiff1d函数的功能、语法、以及使用示例。有需要的朋友可以参考了解看看,接下来就跟随小编一起学习一下吧!
setdiff1d(ar1, ar2, assume_unique=False)
1.功能:找到2个数组中集合元素的差异。
2.返回值:在ar1中但不在ar2中的已排序的唯一值。
3.参数:
ar1:array_like 输入数组。
ar2:array_like 输入比较数组。
assume_unique:bool。如果为True,则假定输入数组是唯一的,即可以加快计算速度。 默认值为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次)
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库函数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,查看具体值下图所示:


值得注意的地方在于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)

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

关于Python numpy中setdiff1d函数的内容就介绍到这,感兴趣的朋友可以了解看看,希望大家阅读完这篇文章能有所收获,想要了解更多大家可以关注其它的相关文章。
文本转载自脚本之家
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了Python基础异常处理梳理总结,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
这篇文章主要为大家介绍了Python的合并字典,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
今天很有可能你已经做了一些使用滑动窗口(也称为移动窗口)的事情,而你甚至不知道它。例如:许多编辑算法都是基于移动窗口的。在GIS中做地形分析的大多数地形栅格度量(坡度、坡向、山坡阴影等)都基于滑动窗口。很多情况下,对格式化为二维数组的数据进行分析时,都很有可能涉及到滑动窗口。滑动窗口操作非常普遍,非常有用。它们也很容易在Python中实现。学习如何实现移动窗口将把你的数据分析和争论技能提升到一个新的水平。
本文主要介绍了Python构建自动在线刷视频的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
python元类是什么意思?新手可能对python元类比较陌生,这篇文章主要介绍的就是Python元类,Python元类工作和创建Python元类等等,对新手学习和理解有一定的帮助,有这方面的学习需要的朋友可以参考看看。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008