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

Jinku Hu 30 enero 2023 18 enero 2020
  1. Operación aritmética de NumPy
  2. Difusión de NumPy
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]])
Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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