• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    python numpy中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为当前查找位置)。

    演示见下图:

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

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

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

    您可能感兴趣的文章:
    • Python 机器学习库 NumPy入门教程
    • Python基础之Numpy的基本用法详解
    • Python基础之numpy库的使用
    • Python利用numpy实现三层神经网络的示例代码
    • Python数据清洗工具之Numpy的基本操作
    • Python Numpy之linspace用法说明
    • python 将numpy维度不同的数组相加相乘操作
    • python numpy.power()数组元素求n次方案例
    • python中numpy.empty()函数实例讲解
    • python中numpy数组与list相互转换实例方法
    • Python OpenCV中的numpy与图像类型转换操作
    • Python机器学习三大件之一numpy
    上一篇:C语言实现二叉搜索树的完整总结
    下一篇:Python基础之Socket通信原理
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    python numpy中setdiff1d的用法说明 python,numpy,中,setdiff1d,的,