为什么 Numpy 不允许链接条件索引?

sam*_*mmo 3 python numpy

我正在尝试根据另一个数组的内容来索引一个数组,如下所示:

import numpy as np

a = np.random.randint(0,100,10)
b = np.linspace(0,100,10)

print a[b<75]
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我真正想做的是基于两个条件的索引,如下所示:

print a[25<b<75]
Run Code Online (Sandbox Code Playgroud)

但这会产生以下错误:

ValueError:包含多个元素的数组的真值不明确。使用 a.any() 或 a.all()

谢谢你的帮助!

cyb*_*org 5

来自 Python 文档:

比较可以任意链接,例如, x < y <= z 等价于 x < y 和 y <= z

但是 Numpy 数组不适合模式x < y and y <= z,因为它意味着[a bool ndarray] and [a bool ndarray],并且这要求and在 numpy ndarrays 的两侧对整个数组(例如,b==True)都有一个未定义的 bool 值。

因此,您必须对数组使用二进制按位运算以获取元素级的“and”: (b > 25) & (b < 75)