numpy中setdiff1d函数的功能是什么,如何使用?
发布时间:2021-12-31 13:50:20 所属栏目:语言 来源:互联网
导读:这篇文章我们来了解一下Python numpy中setdiff1d函数的相关内容,下文介绍了setdiff1d函数的功能、语法、以及使用示例。有需要的朋友可以参考了解看看,接下来就跟随小编一起学习一下吧! 一、函数解释 setdiff1d(ar1, ar2, assume_unique=False) 1.功能:
这篇文章我们来了解一下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。 二、具体示例 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库函数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为当前查找位置)。 (编辑:海南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐