2017-02-09 57 views
3

如何查找範圍之間的數字?Python:numpy數組大小,小於值

c = array[2,3,4,5,6] 
>>> c>3 
>>> array([False, False, True, True, True] 

然而,當我得到C,在兩個數字之間,它返回錯誤

>>> 2<c<5 
>>> ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() 

的願望輸出

array([False, True, True, False, False] 
+0

[numpy的陣列合成邏輯語句和在]的可能的複製(http://stackoverflow.com/questions/21996661/combining-logic-statements-and-in -numpy-array) – Moberg

回答

4

試試這個,

(c > 2) & (c < 5) 

結果

array([False, True, True, False, False], dtype=bool) 
2

Python的評估2<c<5(2<c) and (c<5)這將是有效的,但and關鍵字不能像我們想用numpy數組那樣工作。 (它試圖給每個數組轉換到一個布爾值,並且這種行爲不能被重寫,所討論的here。)因此,對於具有numpy的陣列的矢量and操作,你需要這樣做:

(2<c) & (c<5)

+1

我將'&&'改正爲'&'。 –

1

你可以做這樣的事情:

import numpy as np 
c = np.array([2,3,4,5,6]) 
output = [(i and j) for i, j in zip(c>2, c<5)] 

輸出:

[False, True, True, False, False]