我有一个大小为(13188116(的数组,我想将除23、43和64之外的值替换为零。我尝试过np.where
,但返回了一个满为零的数组。有人能帮我更正以下代码吗:
arr=np.array(img)
labels=[23,43,64]
arr_masked= np.where(arr!=labels,0,arr)
您需要np.isin
。
arr_masked= np.where(np.isin(arr, labels), arr, 0)
这里有另一种解决我的问题的方法:
arr_masked= np.where((arr != 23)*(arr != 43)*(arr != 64) , 0, arr)
使用np.isin&np.其中
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]