python使用numpy求两个数组的并集交集差集(图像)
文章目录
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.intersect1d
、np.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]
参考:
2. 概率图的交并差
2.1 概念说明
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)
参考:
来源:吨吨不打野