gpt4 book ai didi

python - 带掩码的 numpy 赋值

转载 作者:行者123 更新时间:2023-11-30 21:59:25 24 4
gpt4 key购买 nike

我是Python新手。在练习期间,我应该使用掩码将以下列表中低于 100 的所有值乘以 2:

a = np.array([230, 10, 284, 39, 76])

所以我编写了以下代码:

import numpy as np
a = np.array([230, 10, 284, 39, 76])
cut = 100
a[a < cut] = a*2

这会导致以下错误:
IndexError:索引 230 超出尺寸为 5 的轴 0 的范围

这很令人困惑,因为据我了解,a[a < cut]实际上指的是数组 a 中的每个值,但是aa*2指的是整个数组。

如何使用屏蔽方法而不是使用循环来更正此代码?

最佳答案

不太确定你想要什么,如果你想分配到 a < cut 的地方当您分配给 a < cut = [0, 1, 0, 1, 1] 时,成立( a[a < cut] 是 bool 索引) ,您分配给元素为 1 的位置,这意味着在右侧它需要一个大小为 3 (或者当然是一个数字)的 numpy 数组。你可以这样做

In [1]: a = np.array([230, 10, 284, 39, 76])

In [2]: a[a < cut] = 999

In [3]: a
Out[3]: array([230, 999, 284, 999, 999])

或者

In [1]: a = np.array([230, 10, 284, 39, 76])

In [2]: a[a < cut] = a[a < cut] * 2

In [3]: a
Out[3]: array([230, 20, 284, 78, 152])

将所选元素乘以 2。

关于python - 带掩码的 numpy 赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54600851/

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