如何通过检查数组中的项目是否在列表中来制作布尔数组?
python 180
原文标题 :How to make a boolean array by checking if the items in an array is in a list?
我正在尝试在一个 numpy 数组中查找每个项目arr
这也在任意列表中lst
并替换它们,但是arr > 0
将生成一个布尔数组以便于掩蔽,arr in lst
仅适用于 all() 或 any() 这不是我需要什么。
示例输入:数组(1, 2, 3, 4, 5)
、列表[2, 4, 6, 8]
输出:数组(1, 0, 3, 0, 5)
我设法用 for 循环得到了相同的结果:
for i in range(len(arr)):
if arr[i] in lst:
arr[i] = 0
只是想知道是否有其他方法可以将数组与列表分开。
回复
我来回复-
♦ 评论
你可以使用
numpy.isin
:a = np.array((1, 2, 3, 4, 5)) lst = [2, 4, 6, 8] a[np.isin(a, lst)] = 0
给你一个
a
:array([1, 0, 3, 0, 5])
2年前 -
hnfl 评论
您可以迭代
lst
并仍然使用 numpy 的索引。for element in lst: arr[arr == element] = 0
2年前 -
Sharim Iqbal 评论
你也可以使用这个。
arr = (1, 2, 3, 4, 5) lst = [2, 4, 6, 8] new_arr = tuple('Replace With Anything' if a in lst else a for a in arr) print(new_arr)
2年前