>>> np.any((0 < x) & (x < 1))
True
Quoi x.any()
fait en réalité : c'est la même chose que np.any(x)
ce qui signifie qu'il renvoie True
si des éléments dans x
sont non nuls. Donc votre comparaison est 0 < True < 1
ce qui est faux car dans python 2 0 < True
est vrai, mais True < 1
ne l'est pas, puisque True == 1
.
Dans cette approche, en revanche, nous créons des tableaux booléens indiquant si la comparaison est vraie pour chaque élément, puis nous vérifions si un élément de ce tableau est vrai :
>>> 0 < x
array([[ True, False, False],
[False, True, True],
[False, False, True]], dtype=bool)
>>> x < 1
array([[False, True, True],
[ True, False, True],
[ True, True, False]], dtype=bool)
>>> (0 < x) & (x < 1)
array([[False, False, False],
[False, False, True],
[False, False, False]], dtype=bool)
Vous devez faire l'explicitation &
car malheureusement, numpy ne fonctionne pas (et je pense qu'il ne peut pas fonctionner) avec le chaînage intégré des opérateurs de comparaison de python.