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]
參考:
# 和
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)
參考: