La multiplicación de matrices es una operación que toma dos matrices como entrada y produce una matriz única multiplicando las filas de la primera matriz por la columna de la segunda matriz. En la multiplicación de matrices, asegúrese de que el número de columnas de la primera matriz debe ser igual al número de filas de la segunda matriz.
Ejemplo: Multiplicación de dos matrices entre sí de tamaño 3×3.
Input:matrix1 = ([1, 2, 3], [3, 4, 5], [7, 6, 4]) matrix2 = ([5, 2, 6], [5, 6, 7], [7, 6, 4]) Output : [[36 32 32] [70 60 66] [93 74 100]]>
Métodos para multiplicar dos matrices en Python
1. Usando bucles for explícitos: Esta es una técnica simple para multiplicar matrices, pero uno de los métodos costosos para conjuntos de datos de entrada más grandes. En esto, utilizamos anidados. para bucles para iterar cada fila y cada columna.
Si la matriz1 es una nxm matriz y matriz2 es una m x l matriz.
Implementación:
int a carbón
Python3
# input two matrices of size n x m> matrix1>=> [[>12>,>7>,>3>],> >[>4> ,>5>,>6>],> >[>7> ,>8>,>9>]]> matrix2>=> [[>5>,>8>,>1>],> >[>6>,>7>,>3>],> >[>4>,>5>,>9>]]> res>=> [[>0> for> x>in> range>(>3>)]>for> y>in> range>(>3>)]> # explicit for loops> for> i>in> range>(>len>(matrix1)):> >for> j>in> range>(>len>(matrix2[>0>])):> >for> k>in> range>(>len>(matrix2)):> ># resulted matrix> >res[i][j]>+>=> matrix1[i][k]>*> matrix2[k][j]> print> (res)> |
>
>Producción
[[114, 160, 60], [74, 97, 73], [119, 157, 112]]>
En este programa, hemos utilizado bucles for anidados para calcular el resultado que iterarán a través de cada fila y columna de las matrices, y finalmente acumularán la suma del producto en el resultado.
2. Usando Numpy: La multiplicación usando Numpy también se conoce como vectorización, cuyo objetivo principal es reducir o eliminar el uso explícito de bucles for en el programa mediante el cual el cálculo se vuelve más rápido.
Numpy es una compilación de un paquete en Python para procesamiento y manipulación de matrices. Para operaciones matriciales más grandes utilizamos el paquete numpy de Python, que es 1000 veces más rápido que un método iterativo.
Para obtener más información sobre Numpy, visite el Enlace
Implementación:
Python3
# We need install numpy in order to import it> import> numpy as np> # input two matrices> mat1>=> ([>1>,>6>,>5>],[>3> ,>4>,>8>],[>2>,>12>,>3>])> mat2>=> ([>3>,>4>,>6>],[>5>,>6>,>7>],[>6>,>56>,>7>])> # This will return dot product> res>=> np.dot(mat1,mat2)> # print resulted matrix> print>(res)> |
>
>
Producción:
[[ 63 320 83] [ 77 484 102] [ 84 248 117]]>
Usando engordado
Python3
# same result will be obtained when we use @ operator> # as shown below(only in python>3.5)> import> numpy as np> # input two matrices> mat1>=> ([>1>,>6>,>5>],[>3> ,>4>,>8>],[>2>,>12>,>3>])> mat2>=> ([>3>,>4>,>6>],[>5>,>6>,>7>],[>6>,>56>,>7>])> # This will return matrix product of two array> res>=> mat1 @ mat2> # print resulted matrix> print>(res)> |
>
>
Producción:
[[ 63 320 83] [ 77 484 102] [ 84 248 117]]>
En el ejemplo anterior hemos utilizado el producto escalar y en matemáticas el producto escalar es una operación algebraica que toma dos vectores de igual tamaño y devuelve un solo número. El resultado se calcula multiplicando las entradas correspondientes y sumando esos productos.