这是一个非常简单的问题,但我还没有找到简单的答案。假设您有一个大数组,该数组的索引列表,并且您希望使用这些索引生成布尔掩码。
import numpy as np
# A large array
arr = np.random.uniform(0., 1., 500000)
# A list of indexes (much larger in real code)
idx = [89, 3455, 3, 26789]
# The boolean mask
msk = []
for _ in range(len(arr)):
if _ in idx:
msk.append(True)
else:
msk.append(False)
msk = np.array(msk)
Run Code Online (Sandbox Code Playgroud)
上面的 for 块可以工作,但对于大型idx数组来说会变慢。实现这一目标的快速方法是什么?我知道np.where() 可以反过来使用(布尔值转换为索引),它也可以在这里使用吗?