2( jupiter)
def mapper(a, b):
return [((i, j), a[i][k] * b[k][j])
for i in range(len(a))
for j in range(len(b[0]))
for k in range(len(b))]
def map_reduce(a, b):
kv = mapper(a, b)
grouped = {}
for k, v in kv:
grouped.setdefault(k, []).append(v)
return grouped
def to_matrix(grouped, r, c):
return [[sum(grouped[(i, j)]) for j in range(c)] for i in range(r)]
# Example
a = [[1, 2, 3], [4, 5, 6]]
b = [[7, 8], [9, 10], [11, 12]]
for row in to_matrix(map_reduce(a, b), len(a), len(b[0])):
print(row)
Comments
Post a Comment