Pregunta sobre numpy, python – Múltiples condiciones usando 'o' en una matriz numpy

22

Así que tengo estas condiciones:

A = 0 a 10O 40 a 60

B = 20 a 50

y tengo este codigo:

<code>area1 = N.where((A>0) & (A<10)),1,0)
area2 = N.where((B>20) & (B<50)),1,0)
</code>

Mi pregunta es: ¿cómo lo hago?O'condición en numpy?

Tu respuesta

2   la respuesta
28

Si sobrecarga numpy& para booleanand puedes asumir que| es booleanoor.

<code>area1 = N.where(((A>0) & (A<10)) | ((A>40) & (A<60))),1,0)
</code>
Una cosa que debemos hacer es no olvidar poner las desigualdades entre paréntesis debido a su menor prioridad de operación. Roman Shapovalov
pienso que& es a nivel de bits y ... lo que (en este caso) es irrelevante ya que (A> 0) es una matriz deTrue/False (es decir.1s y0s) mgilson
24

Haynumpy.logical_or

http://docs.scipy.org/doc/numpy/reference/generated/numpy.logical_or.html

adormecidological_and ylogical_or son los ufuncs que quieres (creo)

Tenga en cuenta que& no eslogical and, espoco a poco and. Esto aún funciona para usted porque (a> 10) devuelve una matriz lógica (por ejemplo, 1 y 0) al igual que su segunda condición. Entonces, en este caso, "lógico y" y "bit a bit y" son equivalentes (igual que lógico y bit a bitor). Pero en otros casos, las operaciones bitwise pueden producir resultados sorprendentes (sobre todo porque Python's& y| los operadores tienen menor prioridad de la esperada en estos contextos).

Preguntas relacionadas