Programa Python para multiplicar dos arrays – Part 1

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *