是否有任何方法可以将数组转换为二进制数组,使定义列表中存在的任何元素都是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]])