我有一個大小為(1318、1816)的陣列,我想將除 23,43 和 64 之外的值替換為零。我試過np.where
了,但回傳一個全零的陣列。誰能幫我更正以下代碼:
arr=np.array(img)
labels=[23,43,64]
arr_masked= np.where(arr!=labels,0,arr)
uj5u.com熱心網友回復:
你想要np.isin
。
arr_masked= np.where(np.isin(arr, labels), arr, 0)
uj5u.com熱心網友回復:
這是解決我的問題的另一種方法:
arr_masked= np.where((arr != 23)*(arr != 43)*(arr != 64) , 0, arr)
uj5u.com熱心網友回復:
使用np.isin和np.where檢查下面
import numpy as np
img = np.array([1,2,3,4,5])
labels = [2,5]
print(np.where(np.isin(img,labels),1,img))
輸出:
[1 1 3 4 1]
uj5u.com熱心網友回復:
我認為在 where 中擁有多個條件的最佳方法是使用 np.logical_or,這可以將多個運算子組合為“==”或“>=”或“!=”
condition = np.logical_or(arr == 23,arr == 43, arr == 64)
np.where(condition, arr, 0)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/507386.html