程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python使用numpy求兩個數組的並集交集差集(圖像)

編輯:Python

文章目錄

  • 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?

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved