Multiplicación de matrices

Librerías utilizadas:

  • random

In [1]:
import random

Matriz de prueba

Crear una nueva matriz de prueba de dimensiones filas x columnas.

Cada elemento será calculado aleatoriamente entre 0 y valorMaximoNumero.


In [2]:
def inicializarMatrizNueva(filas,columnas,valorMaximoNumero):
    matriz = []
    for i in range(filas):
        fil = []
        for j in range(columnas):
            a = random.randrange(valorMaximoNumero)
            fil.append(a)
        matriz.append(fil)
    
    matriz = sc.parallelize(matriz)
    return matriz

Ejecutar y tomar las dos primeras filas para verificar si sí funciona el algoritmo


In [3]:
matriz = inicializarMatrizNueva(10000,20,1000)
print(matriz.take(2))


[[572, 448, 125, 644, 458, 538, 792, 157, 800, 150, 983, 929, 337, 719, 344, 726, 674, 779, 668, 591], [586, 168, 381, 687, 609, 682, 306, 481, 380, 777, 301, 115, 775, 917, 97, 396, 568, 25, 151, 5]]

In [4]:
matriz2 = inicializarMatrizNueva(20,10000,1000)
print(matriz.take(2))


[[572, 448, 125, 644, 458, 538, 792, 157, 800, 150, 983, 929, 337, 719, 344, 726, 674, 779, 668, 591], [586, 168, 381, 687, 609, 682, 306, 481, 380, 777, 301, 115, 775, 917, 97, 396, 568, 25, 151, 5]]

Se guarda el archivo en $HOMEHDFS/matriz5


In [5]:
matriz.saveAsTextFile("matriz_n8")
matriz2.saveAsTextFile("matriz_n9")

Implementación multiplicación de matrices

Lectura de la matriz


In [ ]:
matriz2=sc.textFile("matriz8")

Función para separar y limpiar los números del archivo. Recibe cada línea y la separa por espacios, luego limpia ,, [ y ]


In [ ]:
def quitar(x):
    y = x.split()
    return map(lambda w: int(w.replace(",","").replace("[","").replace("]","")),y)

In [ ]:
matriz2 = matriz2.map(quitar)

In [ ]:
print(matriz2.take(2))

In [ ]: