gpt4 book ai didi

python - numpy 从数组中获取掩码

转载 作者:行者123 更新时间:2023-11-28 22:53:56 25 4
gpt4 key购买 nike

假设我有一个 numpy 数组

a = np.array([0, 8, 25, 78, 68, 98, 1])

和掩码数组 b = [0, 1, 1, 0, 1]

有没有简单的方法得到下面的数组:

[8, 25, 68] - 这是原始数组中的第一个、第二个和第四个元素。这对我来说听起来像是面具。

我尝试过的最明显的方法是 a[b],但这并没有产生理想的结果。在此之后我试图调查 masked operations in numpy但它似乎将我引向了错误的方向。

最佳答案

如果 ab 都是 numpy 数组并且 b 是严格的 1 和 0:

>>> a[b.astype(np.bool)]
array([ 8, 25, 68])

应该注意的是,这仅在极小的情况下明显更快,并且范围比@falsetru 的回答更受限制:

a = np.random.randint(0,2,5)

%timeit a[a==1]
100000 loops, best of 3: 4.39 µs per loop

%timeit a[a.astype(np.bool)]
100000 loops, best of 3: 2.44 µs per loop

对于较大的情况:

a = np.random.randint(0,2,5E6)

%timeit a[a==1]
10 loops, best of 3: 59.6 ms per loop

%timeit a[a.astype(np.bool)]
10 loops, best of 3: 56 ms per loop

关于python - numpy 从数组中获取掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18765904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com