8.2.4 Operaciones sobre arrays

8.2.4 Operaciones sobre arrays

Operaciones lógicas

Indexado booleano

El indexado booleano es una operación que permite conocer (a nivel de elemento) si un array cumple o no con una determinada condición:

8.2.4 Operaciones sobre arrays

Las condiciones pueden ser más complejas e incorporar operadores lógicos | (or) y & (and):

8.2.4 Operaciones sobre arrays

8.2.4 Operaciones sobre arrays

Consejo: El uso de paréntesis es obligatorio si queremos mantener la precedencia y que funcione correctamente.

Ejercicio

Extraiga todos los números impares de la siguiente matriz:

8.2.4 Operaciones sobre arrays

Si lo que nos interesa es obtener los índices del array que satisfacen una determinada condición, NumPy nos proporciona el método where() cuyo comportamiento se ejemplifica a continuación:

8.2.4 Operaciones sobre arrays

Ejercicio

Partiendo de una matriz de 10 filas y 10 columnas con valores aleatorios enteros en el intervalo [0, 100], realice las operaciones necesarias para obtener una matriz de las mismas dimensiones donde:

  • Todos los elementos de la diagonal sean 50.
  • Los elementos mayores que 50 tengan valor 100.
  • Los elementos menores que 50 tengan valor 0.

Comparando arrays

Dados dos arrays podemos compararlos usando el operador == del mismo modo que con cualquier otro objeto en Python. La cuestión es que el resultado se evalúa a nivel de elemento:

8.2.4 Operaciones sobre arrays

Si queremos comparar arrays en su totalidad, podemos hacer uso de la siguiente función:

8.2.4 Operaciones sobre arrays

Operaciones de conjunto

Al igual que existen operaciones sobre conjuntos en Python, también podemos llevarlas a cabo sobre arrays en NumPy.

Unión de arrays

x U y

8.2.4 Operaciones sobre arrays

Intersección de arrays

𝑥 ∩ 𝑦

8.2.4 Operaciones sobre arrays

Diferencia de arrays

𝑥 ∖ 𝑦

8.2.4 Operaciones sobre arrays

Ordenación de arrays

En términos generales, existen dos formas de ordenar cualquier estructura de datos, una que modifica «in-situ» los valores (destructiva) y otra que devuelve «nuevos» valores (no destructiva). En el caso de NumPy también es así.

Ordenación sobre arrays unidimensionales

8.2.4 Operaciones sobre arrays

Ordenación sobre arrays multidimensionales

8.2.4 Operaciones sobre arrays

Nota: También existe values.sort(axis=1) y values.sort(axis=0) como métodos «destructivos» de ordenación.

Contando valores

Otra de las herramientas útiles que proporciona NumPy es la posibilidad de contar el número de valores que existen en un array en base a ciertos criterios.

Para ejemplificarlo, partiremos de un array unidimensional con valores de una distribución aleatoria uniforme en el intervalo [1,10]:

8.2.4 Operaciones sobre arrays

Valores únicos:

8.2.4 Operaciones sobre arrays

Valores únicos (incluyendo frecuencias):

8.2.4 Operaciones sobre arrays

Valores distintos de cero:

8.2.4 Operaciones sobre arrays

Valores distintos de cero (incluyendo condición):

8.2.4 Operaciones sobre arrays

Operaciones aritméticas

Una de las grandes ventajas del uso de arrays numéricos en NumPy es la posibilidad de trabajar con ellos como si fueran objetos «simples» pero sacando partido de la aritmética vectorial. Esto redunda en una mayor eficiencia y rapidez de cómputo.

Operaciones aritméticas con mismas dimensiones

Cuando operamos entre arrays de las mismas dimensiones, las operaciones aritméticas se realizan elemento a elemento (ocupando misma posición) y el resultado, obviamente, tiene las mismas dimensiones:

8.2.4 Operaciones sobre arrays

8.2.4 Operaciones sobre arrays

Operaciones aritméticas con distintas dimensiones

Cuando operamos entre arrays con dimensiones diferentes, siempre y cuando se cumplan ciertas restricciones en tamaños de filas y/o columnas, lo que se produce es un «broadcasting» (o difusión) de los valores.

Suma con array «fila»:

8.2.4 Operaciones sobre arrays

Suma con array «columna»:

8.2.4 Operaciones sobre arrays

8.2.4 Operaciones sobre arrays

Publicaciones Similares