2013-12-22 57 views
2

我試圖索引一個數組根據其他像這樣的內容:爲什麼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: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

感謝您的幫助!

+1

'[(25> b)&(b> 75)] AND運算符也不起作用? – 2013-12-22 16:05:37

+0

它更接近但仍然不是我所尋找的東西:它似乎只產生一系列的假。 – sammosummo

+1

b大於75且小於25永遠不會是真的。 – M4rtini

回答

3

從Python文檔:

Comparisons can be chained arbitrarily, e.g., x < y <= z is equivalent to x < y and y <= z

但numpy的數組不匹配這個模式x < y and y <= z,因爲這意味着[a bool ndarray] and [a bool ndarray],這就更需要在and兩側的numpy的ndarrays將有一個布爾值整個陣列(例如,b==True),這是沒有定義。

因此,您必須在數組上使用二進制按位運算來獲取元素明智的「和」:(b > 25) & (b < 75)

相關問題