Función Python Numpy.where()

Sohaib Atiq 30 enero 2023
  1. La sintaxis de numpy.where()
  2. Códigos de ejemplo: numpy.where() Sin [X, Y]
  3. Códigos de ejemplo: numpy.where() Con 1-D Array
  4. Códigos de ejemplo: numpy.where() Con 2-D Array
  5. Códigos de ejemplo: numpy.where() Con múltiples condiciones
Función Python Numpy.where()

La función Numpy.where() genera los índices de el array que cumplen la condición de entrada, si x, y no están dados; o los elementos de el array de x o y basados en la condición dada.

La sintaxis de numpy.where()

numpy.where(condition, [x, y])

Parámetros

condition array_like, True o False
Si la condición es True, la salida contiene el elemento de x, de lo contrario, la salida contiene el elemento de y.
x,y de la cual el retorno genera
Ya sea que pasen ambos (x, y) o ninguno.

Retorno

Devuelve una matriz. Si la condición es True, el resultado contiene elementos de x, y si la condición es False, el resultado contiene elementos de y.

Devuelve índices de el array es x, y no se dan.

Códigos de ejemplo: numpy.where() Sin [X, Y]

import numpy as np

m = np.array([1, 2, 3, 4, 5])

n = np.where(m > 3)

print(n)

Resultado:

(array([3, 4], dtype=int64),)

Devuelve los índices de m, donde su elemento es mayor que 3 - a > 3.

Si necesitas el elemento en lugar de los índices,

Códigos de ejemplo: numpy.where() Con 1-D Array

import numpy as np

m = np.where([True, False, True], [1,2,3], [4, 5, 6])

print(m)

Resultado:

[1 5 3]

Cuando la condición es un array 1-D, numpy.where() función itera sobre el array de condiciones, y escoge el elemento de x si el elemento de condición es True, o el elemento de y si el elemento de condición es False.

Numpy donde el array 1-D

Códigos de ejemplo: numpy.where() Con 2-D Array

import numpy as np

x = np.array([[10, 20, 30], [3, 50, 5]])
y = np.array([[70, 80, 90], [100, 110, 120]])
condition = np.where(x > 20, x, y)

print("Input array :")
print(x)
print(y)
print("Output array with condition applied:")
print(condition)

Resultado:

Input array :
[[10 20 30]
[ 3 50  5]]
[[ 70  80  90]
[100 110 120]]
Output array with condition applied:
[[ 70  80  30]
[100  50 120]]

Aplica la condición de x>20 a todos los elementos de x, si es True, entonces el elemento de x da como salida, y si es False, da el elemento de y.

Hacemos un ejemplo simplificado para mostrar cómo funciona.

import numpy as np

m = np.where(
    [[True, False, True], [False, True, False]],
    [[1, 2, 3], [4, 5, 6]],
    [[7, 8, 9], [10, 11, 12]],
)

print(m)

Resultado:

[[ 1  8  3]
 [10  5 12]]

Numpy donde 1-D array

Códigos de ejemplo: numpy.where() Con múltiples condiciones

También podríamos aplicar dos o múltiples condiciones en la función numpy.where().

import numpy as np

m = np.array([1, 2, 3, 4, 5])

n = np.where((m > 1) & (m < 5), m, 0)

print(n)

Resultado:

[0 2 3 4 0]

Aplica las condiciones múltiples, m > 1 y m < 5, y devuelve el elemento si éste satisface ambas condiciones.

La lógica entre las condiciones múltiples no se limita a AND (&), sino que también se acepta OR (|).

import numpy as np

m = np.array([1, 2, 3, 4, 5])

n = np.where((m < 2) | (m > 4), m, 0)

print(n)

Resultado:

[1 0 0 0 5]