我正在尝试根据另一个数据的内容索引一个数组,如下所示:
import numpy as np
a = np.random.randint(0,100,10)
b = np.linspace(0,100,10)
print a[b<75]
这很好用,但我真正想做的是基于两个条件的索引,如:
print a[25<b<75]
但这会产生以下错误:
ValueError:具有多个元素的数组的真值 暧昧。使用a.any()或a.all()
感谢您的帮助!
答案 0 :(得分:3)
来自Python文档:
比较可以任意链接,例如,x <1。 y&lt; = z是等价的 到x&lt; y和y&lt; = z
但是Numpy数组不适合模式x < y and y <= z
,因为它意味着[a bool ndarray] and [a bool ndarray]
,这要求在and
的两侧,numpy ndarrays将具有bool值。整个数组(例如,b==True
),未定义。
因此,您必须对数组使用二进制按位运算,以获得元素“和”:(b > 25) & (b < 75)
。