python - una - que es numpy
Cómo usar numpy.where con operadores lógicos (1)
Estoy tratando de encontrar los índices de todos los elementos en una matriz que son mayores que a pero menores que b. Probablemente sea solo un problema con mi sintaxis, pero esto no funciona:
numpy.where((my_array > a) and (my_array < b))
¿Cómo debo arreglar esto? ¿O hay una mejor manera de hacerlo?
¡Gracias!
Aquí hay dos maneras:
In [1]: my_array = arange(10)
In [2]: where((my_array > 3) & (my_array < 7))
Out[2]: (array([4, 5, 6]),)
In [3]: where(logical_and(my_array > 3, my_array < 7))
Out[3]: (array([4, 5, 6]),)
Para el primero (reemplazando and
con &
), tenga cuidado de agregar los paréntesis de manera adecuada: &
tiene mayor prioridad que los operadores de comparación. También puede usar *
, pero no lo recomendaría: es intrépido y no es un código legible.
In [4]: where((my_array > 3) * (my_array < 7))
Out[4]: (array([4, 5, 6]),)