2013-06-12 37 views
8

Trong NumPy, tôi có thể tạo ra một mảng boolean như thế này:NumPy chuỗi so sánh với hai vị từ

>>> arr = np.array([1, 2, 1, 2, 3, 6, 9]) 
>>> arr > 2 
array([False, False, False, False, True, True, True], dtype=bool) 

là có thể so sánh chuỗi với nhau? Ví dụ:

>>> 6 > arr > 2 
array([False, False, False, False, True, False, False], dtype=bool) 
+0

FYI, [PEP 535] (https://www.python.org/dev/peps/pep-0535/) đề xuất làm điều này có thể trong trăn 3.7. – drammock

Trả lời

13

AFAIK gần nhất bạn có thể nhận được là sử dụng &, |, và ^:

>>> arr = np.array([1, 2, 1, 2, 3, 6, 9]) 
>>> (2 < arr) & (arr < 6) 
array([False, False, False, False, True, False, False], dtype=bool) 
>>> (2 < arr) | (arr < 6) 
array([ True, True, True, True, True, True, True], dtype=bool) 
>>> (2 < arr)^(arr < 6) 
array([ True, True, True, True, False, True, True], dtype=bool) 

Tôi không nghĩ rằng bạn sẽ có thể để có được a < b < c chaining kiểu để công việc.

7

Bạn có thể sử dụng toán tử logic hợp lý để thực hiện điều gì đó tương tự.

>>> arr = np.array([1, 2, 1, 2, 3, 6, 9]) 
>>> arr > 2 
array([False, False, False, False, True, True, True], dtype=bool) 
>>>np.logical_and(arr>2,arr<6) 
Out[5]: array([False, False, False, False, True, False, False], dtype=bool)