Tutorial de Numpy - Operación y difusión de NumPy Math

  1. Operación aritmética de NumPy
  2. Difusión de NumPy

En este capítulo cubriremos las operaciones en NumPy, como las operaciones aritméticas básicas y las operaciones matriciales.

Comencemos con la operación aritmética básica.

Operación aritmética de NumPy

La suma, la resta, la multiplicación y la división son las operaciones aritméticas más básicas en NumPy. Son similares a las operaciones aritméticas normales entre números.

import numpy as np
arrayA = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])
arrayB = arrayA.T
#array([[1, 2, 3],
#       [4, 5, 6],
#       [7, 8, 9]])

arrayB = arrayA.T
#array([[1, 4, 7],
#       [2, 5, 8],
#       [3, 6, 9]])

arrayA + arrayB
#array([[ 2,  6, 10],
#       [ 6, 10, 14],
#       [10, 14, 18]])

arrayA - arrayB
#array([[ 0, -2, -4],
#       [ 2,  0, -2],
#       [ 4,  2,  0]])

arrayA * arrayB
#array([[ 1,  8, 21],
#       [ 8, 25, 48],
#       [21, 48, 81]])

arrayA / arrayB
#array([[1.        , 0.5       , 0.42857143],
#       [2.        , 1.        , 0.75      ],
#       [2.33333333, 1.33333333, 1.        ]])

Hay que tener en cuenta que la operación de multiplicación de matrices - *, multiplica los elementos en la misma posición en las dos matrices para obtener el elemento en la misma posición de la matriz de resultados. No es el producto de los puntos de dos matrices dadas el que debe ser calculado con el método np.dot.

np.dot(arrayA, arrayB)
#array([[ 14,  32,  50],
#       [ 32,  77, 122],
#       [ 50, 122, 194]])

Difusión de NumPy

Dos matrices deben tener la misma forma en la operación matemática de la matriz. Pero NumPy introduce el concepto de broadcasting para rellenar automáticamente el array si es posible cuando dos arrays no tienen la misma forma.

Permítanme explicar este concepto con ejemplos,

import numpy as np
arrayA = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])
arrayA + 1
#array([[ 2,  3,  4],
#       [ 5,  6,  7],
#       [ 8,  9, 10]])

Aquí, 1 se añade a todos los elementos del arrayA, o en otras palabras, 1 se transmite desde la forma (1, 1) a la misma forma del arrayA - (3, 3) para hacer posible la operación de adición del array.

La operación real es la siguiente,

arrayA + np.array([[1,1,1],[1,1,1],[1,1,1]])

La radiodifusión en NumPy también podría utilizarse en los siguientes escenarios,

Dos matrices tienen la misma longitud en una dimensión, y una matriz tiene la longitud como 1 en la otra dimensión

Empecemos con un ejemplo,

arrayC = np.array([10, 11, 12])
arrayA + arrayC
#array([[11, 13, 15],
#       [14, 16, 18],
#       [17, 19, 21]])

La forma de arrayA es (3, 3) y la forma de arrayC es (3, 1). Cumple con el criterio de las dimensiones de los arreglos, y los datos de la fila única del arrayC serán transmitidos a tres filas para que coincidan con la forma del arrayA.

También es aplicable si dos matrices tienen la misma longitud de fila.

arrayD = np.array([[10],[11],[12]])
#array([[10],
#       [11],
#       [12]])
arrayA + arrayD
#array([[11, 12, 13],
#       [15, 16, 17],
#       [19, 20, 21]])
comments powered by Disqus