def matrix_multiply(arr0, arr1):
finalrow = len(arr0)
finalcolumn = len(arr1[0])
final = [[None]*finalcolumn] *finalrow
print (final)
for j in range(len(arr0)):
for k in range(len(arr0)):
summ = 0
for i in range(len(arr0[0])):
print ("i:", i, "j:",j,"k:",k)
summ += arr0[j][i] * arr1[i][k]
print (summ)
print ("j:", j ,"k:",k)
final[j][k] = summ
print (final)
return final
Итак, я создаю базовую функцию для класса, чтобы умножить 2 матрицы, и кажется, что мой вышеупомянутый алгоритм должен работать, но у меня странные проблемы с индексацией.
arr2 = [[1, 2, 3], [4, 5, 6]]
arr3 = [[1, 2], [2, 4], [5, 8]]
matrix_multiply(arr2, arr3)
[[None, None], [None, None]]
i: 0 j: 0 k: 0
i: 1 j: 0 k: 0
i: 2 j: 0 k: 0
20
j: 0 k: 0
[[20, None], [20, None]]
i: 0 j: 0 k: 1
i: 1 j: 0 k: 1
i: 2 j: 0 k: 1
34
j: 0 k: 1
[[20, 34], [20, 34]]
i: 0 j: 1 k: 0
i: 1 j: 1 k: 0
i: 2 j: 1 k: 0
44
j: 1 k: 0
[[44, 34], [44, 34]]
i: 0 j: 1 k: 1
i: 1 j: 1 k: 1
i: 2 j: 1 k: 1
76
j: 1 k: 1
[[44, 76], [44, 76]]
[[44, 76], [44, 76]]
Если я использую3 примера строки кода для вызова моей функции я получаю этот вывод.Я не понимаю, почему каждый раз, когда я делаю final [i] [j], он помещает число в 2 места в массиве.Может кто-нибудь объяснить, что я делаю не так?