X = [[1, 2], [4, 5], [3, 6]]
3 x 2 matrix이다.
첫번째 row는 X[0] , 첫번째 row의 첫번째 element는 X[0][0]
Y = [[1,2,3],[4,5,6]]
2 x 3 matrix이다
두 행렬을 곱한다고 했을 때 X의 coolumns와 Y의 rows가 같아야 한다
arr1 = [[12,7,3], [4,5,6],[7 ,8,9]] # 3x3 matrix
arr2 = [[5,8,1,2],[6,7,3,0],[4,5,9,1]] # 3x4 matrix
# 1st solution
def solution(arr1, arr2):
answer = [[0 for _ in range(len(arr2[0]))] for _ in range(len(arr1))]
for i in range(len(arr1)): # iterate through rows of arr1
for j in range(len(arr2[0])): # iterate through columns of arr2
for k in range(len(arr2)): # iterate through rows of arr
answer[i][j] += arr1[i][k] * arr2[k][j]
return answer
# 2nd solution
def solution(arr1, arr2):
final = []
for x_row in arr1:
answer = []
for y_col in zip(*arr2):
inner = []
for x, y in zip(x_row, y_col):
inner.append(x*y)
answer.append(sum(inner))
final.append(answer)
return final
# list comprehension
def solution(arr1, arr2):
return [[sum(x*y for x, y in zip(x_row, y_col)) for y_col in zip(*arr2)] for x_row in arr1]
# 3x3 matrix
X = [[12,7,3],
[4 ,5,6],
[7 ,8,9]]
# 3x4 matrix
Y = [[5,8,1,2],
[6,7,3,0],
[4,5,9,1]]
for i in range(len(X)):
for j in range(len(Y[0])):
print(X[i], Y[j])
# IndexError: list index out of range가 난다. i는 0,1,2 3개까지이지만 j는 0,1,2,3,4 이기 때문 Y[0]의 원소 갯수가 3or 이하였으면 index error가 안 난다