如何将np.where用于多个值

  • 本文关键字:用于 where np python numpy
  • 更新时间 :
  • 英文 :


我有一个大小为(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]

最新更新