将NumPy数组转换为二进制数组,其中包含列表中存在的每个元素的条件



是否有任何方法可以将数组转换为二进制数组,使定义列表中存在的任何元素都是1,而列表中不存在的元素都是0?

例如,如果我这样定义NumPy数组:

a = np.array([[23,43,1],[43,5,0],[5,0,0]])

以及这样的列表:

l = [5,43]

我想要一个将数组转换为/创建以下内容的函数:

array([[0, 1, 0],
[1, 1, 0],
[1, 0, 0]])

我已经尝试过np.where(a in l, 1, 0),它给了我这个错误:

ValueError:具有多个元素的数组的真值为模棱两可的使用.any((或.all((

退房https://numpy.org/doc/stable/reference/generated/numpy.isin.html

arr=np.array([[23,43,1],[43,5,0],[5,0,0]])
l = [5,43]
np.isin(arr, l).astype(int)
#array([[0, 1, 0],
#       [1, 1, 0],
#       [1, 0, 0]])

最新更新