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

时间:2013-12-22 16:00:26

标签: python numpy

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

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()

感谢您的帮助!

1 个答案:

答案 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)