如何通过检查数组中的项目是否在列表中来创建布尔数组?



我试图在numpy数组arr中找到每个项目,这也是在任意列表lst中并替换它们,但是arr > 0将生成一个布尔数组以便于屏蔽,arr in lst仅适用于所有()或任何()这不是我需要的。

示例输入:array(1, 2, 3, 4, 5), list[2, 4, 6, 8]

输出:array(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])

您可以在lst上迭代,并且仍然使用numpy的索引。

for element in lst:
arr[arr == element] = 0

你也可以使用这个

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)

最新更新