python - 如何使用链式比较对数组进行 bool 掩码?

标签 python numpy

如何使用一对不等式过滤 numpy 数组,例如:

>>> a = np.arange(10)
>>> a[a <= 6]
array([0, 1, 2, 3, 4, 5, 6])
>>> a[3 < a]
array([4, 5, 6, 7, 8, 9])
>>>
>>> a[3 < a <= 6]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous.
 Use a.any() or a.all()

如果我尝试 a.all(3 < a <= 6),我会得到相同的响应

np.array([x for x in a if 3 < x <= 6])有效,但看起来很讨厌。执行此操作的正确方法是什么?

最佳答案

你需要做的:

a[(3 < a) & (a <= 6)]

这是 python 中的一个“疣”。在 python 中 (3 < a <=6)翻译成((3 < a) and (a <= 6)) .但是 numpy 数组不适用于 and操作,因为 python 不允许重载 andor运营商。因为 numpy 使用 &| .大约一年前有一些关于解决这个问题的讨论,但从那以后我似乎就没怎么关注了。

http://mail.python.org/pipermail/python-dev/2012-March/117510.html

关于python - 如何使用链式比较对数组进行 bool 掩码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15283872/

相关文章:

python - 将大数据数组压缩为 PNG 文件

python - 从 apache 日志中删除 2 次后获取 IP 的正则表达式

python - 使用 Pandas 查找分组行的最小值

python - 将 Matlab (Octave) 组着色代码翻译成 python (numpy, pyplot)

python - numpy.gradient 有什么作用?

python - Pandas 访问最后一个非空值

python - 如何将json文件输出(子进程)加载到python中的变量中?

python - 编码解码Python

python - 在数据框/二维数组中查找元组的行平均值

Python 如何在 numpy 数组中查找第一个重复项