2017-09-16 1 views
-1

ich habe einen numpy Array: (zum Beispiel :)numpy Array - mehr und weniger als

>>> pixels 
array([[233, 233, 233], 
     [245, 245, 245], 
     [251, 251, 251], 
     [248, 248, 248], 
     [248, 248, 248], 
     [248, 248, 248], 
     [248, 248, 248], 
     [248, 248, 248], 
     [248, 248, 248], 
     [248, 248, 248]], dtype=uint8) 

was kann ich tun, um einen boolean-Array für die Werte zu erhalten, die groß als 230 und weniger als 240 (für Beispiel)? wenn ich schreibe

230<pixels<240 

ich diese Massage erhalten:

Traceback (most recent call last): 
    File "<pyshell#78>", line 1, in <module> 
    100<pixels<300 
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() 

es auch nicht funktioniert, wenn ich

schreiben
230<pixels and 240>pixels 

vielen Dank!

+1

Verwenden Klammer und '' & Operator. – Divakar

+0

Mache einfach '(Pixel> 230) & (Pixel <240)', wie von @Divakar vorgeschlagen –

Antwort

0

Mit numpy.where Routine:

import numpy as np 
a = np.array([[233, 233, 233], 
     [245, 245, 245], 
     [251, 251, 251], 
     [248, 248, 248], 
     [248, 248, 248], 
     [248, 248, 248], 
     [248, 248, 248], 
     [248, 248, 248], 
     [248, 248, 248], 
     [248, 248, 248]], dtype='uint8') 

b = np.where((a > 230) & (a < 240), True, False) 
print(b) 

Der Ausgang:

[[ True True True] 
[False False False] 
[False False False] 
[False False False] 
[False False False] 
[False False False] 
[False False False] 
[False False False] 
[False False False] 
[False False False]] 
Verwandte Themen