【发布时间】:2021-02-16 06:46:34
【问题描述】:
这是一个非常简单的问题,但我没有找到一个简单的答案。假设您有一个大数组,该数组的索引列表,并且您想使用这些索引生成一个布尔掩码。
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)
上面的 for 块可以工作,但对于大型 idx 数组会变慢。什么是实现这一目标的快速方法?我知道np.where() can be used 反过来(布尔到索引),这里也可以用吗?
【问题讨论】:
标签: python arrays numpy boolean