python使用numpy求两个数组的并集交集差集(图像)

文章目录

  • 1. 常规数组的并集、交集、差集
  • 2. 概率图的交并差
  • 2.1 概念说明
  • 2.2 实现
  • 1. 常规数组的并集、交集、差集

    import numpy as np
    array1=np.array([3,2,-1,100])
    array2=np.array([0,-5,100,20])
    
    """并集"""
    union=np.union1d(array1,array2)  
    print(union)
    > [ -5  -1   0   2   3  20 100]
    
    """交集"""
    inter=np.intersect1d(array1,array2)  
    print(inter)
    > [100]
    
    """差集"""
    diff=np.setdiff1d(array1,array2)  
    print(diff)
    > [-1  2  3]
    
    diff=np.setdiff1d(array2,array1)  
    print(diff)
    > [-5  0 20]
    
    """
    差集需要额外注意的一点:
    函数原型:numpy.setdiff1d(ar1, ar2, assume_unique=False)
    返回结果:return 1D array of values in ar1 that are not in ar2. 
    返回的是ar1里有,ar2里没有的。因此,ar1和ar2的顺序会导致结果有区别
    """
    

    注意,np.union1d函数及后续的np.intersect1dnp.setdiff1d都只支持1d的数组,如果是多维数组,需要先flatten

    例如:

    import numpy as np
    array1=np.array([[3,2],[-1,100]])
    array2=np.array([[0,-5],[100,20]])
    union=np.union1d(array1.flatten(), array2.flatten())
    print(union)
    > [ -5  -1   0   2   3  20 100]
    

    参考:

  • numpy.union1d
  • numpy.intersect1d
  • numpy.setdiff1d
  • 【冰糖Python】numpy 差集、异或集、并集、交集 setdiff1d() setxor1d() union1d() intersect1d()
  • How to find intersection between two Numpy arrays?
  • NumPy Set Operations – A Detailed Guide!
  • 2. 概率图的交并差

    2.1 概念说明

  • 区别于正经统计意义上的事件概率: 极速统计教程之八 | 概率和集合
  • 这里的概率图,指的是分割任务中,每个点是前景点的概率。
  • 这里的交并差(和)操作:
  • 针对对象:使用两种算法分别得到的同一个图的某个分割对象的概率图
  • 前提:假设模型训练时候是sigmoid函数,只用分割前景和背景,以0.3作为前景背景概率分割的阈值。
  • 交操作:对同一个图,使用两种算法得到的两张分割的概率图;对两个概率图逐元素比较,谁小取谁。
  • 并操作:对同一个图,使用两种算法得到的两张分割的概率图;对两个概率图逐元素比较,谁大取谁。
  • 和操作:对于ensemble来说,求两个概率图的差没什么意义,所以改成概率图的和/2。
  • 2.2 实现

    # 和
    if op_type=="add":
    	prob_rs=(prob1_array+prob2_array)/2
    # 并
    elif op_type=="union":
    	prob_rs=np.where(prob1_array > prob2_array, prob1_array, prob2_array)
    # 交
    elif op_type=="inter":
    	prob_rs=np.where(prob1_array < prob2_array, prob1_array, prob2_array)
    

    参考:

  • Python的Numpy操作:如何实现逐个元素取最大值,组成新array?
  • 来源:吨吨不打野

    物联沃分享整理
    物联沃-IOTWORD物联网 » python使用numpy求两个数组的并集交集差集(图像)

    发表评论