2017-09-16 4 views
-1

i ont un tableau numpy: (par exemple :)tableau numpy - plus et moins de

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

Que puis-je faire pour obtenir un tableau booléen pour les valeurs de 230 grandes et inférieure à 240 (pour Exemple)? quand j'écris

230<pixels<240 

i obtenir ce massage:

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

il est ne fonctionne pas non plus si j'écris

230<pixels and 240>pixels 

merci beaucoup!

+1

Utilisez des parenthèses et '' & opérateur. – Divakar

+0

Faites juste '(pixels> 230) & (pixels <240)', comme suggéré par @Divakar –

Répondre

0

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

La sortie:

[[ 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]]