Pythonで行列の計算をするときはNumPyを使いますが、ライブラリを使わずに行列の積を求める方法を考えました。
def matrix_multiply(a, b):
c = []
for i in range(len(a)):
r = []
for k in range(len(b[0])):
v = 0
for j in range(len(a[0])):
v += a[i][j] * b[j][k]
r.append(v)
c.append(r)
return c
c = []
for i in range(len(a)):
r = []
for k in range(len(b[0])):
v = 0
for j in range(len(a[0])):
v += a[i][j] * b[j][k]
r.append(v)
c.append(r)
return c
a = [[1, 2], [3, 1], [3, 2]]
b = [[1, 3, 5], [2, 4, 1]]
c = matrix_multiply(a, b)
print(c)
b = [[1, 3, 5], [2, 4, 1]]
c = matrix_multiply(a, b)
print(c)
結果
[[5, 11, 7], [5, 13, 16], [7, 17, 17]]
コメント