Tutorial de Numpy - Operación y difusión de NumPy Math
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 del array 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 del array. 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 un array 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]])
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook