python - 带掩码的 numpy 赋值

标签 python numpy

我是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/

相关文章:

python - 将列表拆分为 block , block 之间重复

python - 加快简单距离计算速度

python - "import this, that, other, stuff"在做什么?

Python 基于字符串的 if 语句

python - MongoKit vs MongoEngine vs Flask-MongoAlchemy for Flask

python - 尝试从 python 字典创建一个二维数组

python - Python 的奇怪计算结果

python - 返回最长连续的测距整数序列

python - 没有循环的 Numpy 平均位置?

python - 如何让 matplotlib 的 imshow 生成图像而不被绘制