Dadas dos arrays la tarea es que tendremos que crear un programa para multiplicar dos arrays en python.
Ejemplos:
Input : X = [[1, 7, 3], [3, 5, 6], [6, 8, 9]] Y = [[1, 1, 1, 2], [6, 7, 3, 0], [4, 5, 9, 1]] Output : [55, 65, 49, 5] [57, 68, 72, 12] [90, 107, 111, 21]
Uso de bucles anidados simples: en este programa, tenemos que usar bucles for anidados para iterar a través de cada fila y cada columna.
Implementación:
Python3
# Program to multiply two matrices using nested loops # take a 3x3 matrix A = [[12, 7, 3], [4, 5, 6], [7, 8, 9]] # take a 3x4 matrix B = [[5, 8, 1, 2], [6, 7, 3, 0], [4, 5, 9, 1]] result = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] # iterating by row of A for i in range(len(A)): # iterating by column by B for j in range(len(B[0])): # iterating by rows of B for k in range(len(B)): result[i][j] += A[i][k] * B[k][j] for r in result: print(r)
Producción:
[114, 160, 60, 27] [74, 97, 73, 14] [119, 157, 112, 23]
Complejidad de tiempo: O(M*M*N) , ya que estamos utilizando el recorrido de bucle anidado, M*M*N.
Espacio auxiliar: O(M*N ), ya que estamos usando una array de resultados que es espacio extra.
Método 2: Multiplicación de arrays usando listas anidadas. Usamos zip en Python .
Implementación:
Python3
# Program to multiply two matrices using list comprehension # take a 3x3 matrix A = [[12, 7, 3], [4, 5, 6], [7, 8, 9]] # take a 3x4 matrix B = [[5, 8, 1, 2], [6, 7, 3, 0], [4, 5, 9, 1]] # result will be 3x4 result = [[sum(a * b for a, b in zip(A_row, B_col)) for B_col in zip(*B)] for A_row in A] for r in result: print(r)
Producción:
[114, 160, 60, 27] [74, 97, 73, 14] [119, 157, 112, 23]
Complejidad de tiempo: O(M*M*N ), ya que estamos utilizando el recorrido de bucle anidado, M*M*N.
Espacio auxiliar: O(M*N) , ya que estamos usando una array de resultados que es espacio adicional.
Método 3: Multiplicación de Arrays (Implementación Vectorizada).
Implementación:
Python3
# Program to multiply two matrices (vectorized implementation) # Program to multiply two matrices (vectorized implementation) import numpy as np # take a 3x3 matrix A = [[12, 7, 3], [4, 5, 6], [7, 8, 9]] # take a 3x4 matrix B = [[5, 8, 1, 2], [6, 7, 3, 0], [4, 5, 9, 1]] # result will be 3x4 result= [[0,0,0,0], [0,0,0,0], [0,0,0,0]] result = np.dot(A,B) for r in result: print(r)
Producción:
[114, 160, 60, 27] [74, 97, 73, 14] [119, 157, 112, 23]
Complejidad de tiempo: O(M*M*N) , ya que estamos utilizando el recorrido de bucle anidado, M*M*N.
Espacio auxiliar: O(M*N) , ya que estamos usando una array de resultados que es espacio adicional.
Publicación traducida automáticamente
Artículo escrito por SHARIQ_JMI y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA