Я пытаюсь сделать матричное умножение в Python. Я нашел следующий код, который я пытаюсь понять.(Я знаю, как умножать матрицы вручную, и я хочу понять, как следующий код выполняет то же действие, и под этим я подразумеваю, что первый элемент в BA (строка 1, столбец 1) вычисляется с помощью (1 * 1 + 3 * 3).+ 3 * 3 + 1 * 1) и т. Д.
from numpy import array
A= array([[ 1, 4, 5 ],[ 3, 2, 9], [ 3,6, 2], [ 1,6, 8]])
B=A.T
BA= array([[ 0, 0, 0 ],[ 0,0, 0], [ 0,0, 0] ])
for i in range(len(B)):
for j in range(len(A[0])):
for k in range(len(A)):
BA[i][j] += B[i][k] * A[k][j]
Я знаю, что команда длины для списка возвращает количество элементов в этом списке. Я не уверен, как это работает здесь, поскольку Bматрица, я предполагаю, что она возвращает количество строк.
диапазон len (B) будет (0,3) соответствовать строке 1,2 и 3. для i в диапазоне будет соответствовать i =0, i = 1, i = 2
следующая непонятная вещь для j в диапазоне len (A [0]) Первый элемент A - это первая строка, длина которой, таким образом, будет соответствовать количеству элементовнаходятся в первом элементе A.
По сути, у меня есть базовое понимание того, какой диапазон, длина и т. д. приведены в этом примере, но я бы хотел лучше понять каждое значение i, j, k какрезультат этого, а также последняя строка, которую я действительно неerstand.
BA[i][j] += B[i][k] * A[k][j]
Пожалуйста, объясните как можно проще, потому что я новичок в программировании, и поэтому на данный момент для меня нет ничего тривиального.Спасибо за ваше время, чтобы помочь другим :)