小编Ion*_*cus的帖子

将索引列表转换为布尔掩码的快速方法

这是一个非常简单的问题,但我还没有找到简单的答案。假设您有一个大数组,该数组的索引列表,并且您希望使用这些索引生成布尔掩码。

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() 可以反过来使用(布尔值转换为索引),它也可以在这里使用吗?

python arrays boolean numpy

5
推荐指数
1
解决办法
1046
查看次数

标签 统计

arrays ×1

boolean ×1

numpy ×1

python ×1