2013-06-12 10 views
8

W NumPy mogę wygenerować tablicę logiczną tak:porównanie łańcuch Numpy z dwóch predykatów

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

Czy jest to możliwe do porównań łańcuchowych razem? Na przykład:

>>> 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/) proponuje to umożliwić w pythonie 3.7. – drammock

Odpowiedz

13

AFAIK najbliżej można dostać się do korzystania &, | i ^:

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

Nie sądzę, będziesz w stanie uzyskać a < b < c -Style łańcuchowym do praca.

7

Możesz użyć numpy operatory logiczne, aby zrobić coś podobnego.

>>> 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) 
Powiązane problemy