如何通过检查数组中的项目是否在列表中来创建布尔数组?
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
只是想知道是否有其他方法可以将数组与列表区分开来。
您可以遍历 lst
并仍然使用 numpy 的索引。
for element in lst:
arr[arr == element] = 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])
你也可以用这个。
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)
我正在尝试找到一个 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
只是想知道是否有其他方法可以将数组与列表区分开来。
您可以遍历 lst
并仍然使用 numpy 的索引。
for element in lst:
arr[arr == element] = 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])
你也可以用这个。
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)