Во-первых, довольно интересно задавать вопрос о переполнении стека, поскольку я давно хотел заняться кодированием, но на самом деле не смог начать.
Я пытаюсьсделать функцию умножения матриц в Python без , используя NumPy.Я почти закончил свой код, но я получаю сообщение об ошибке всякий раз, когда я пытаюсь умножить матрицу "A" на матрицу "B" только с одним столбцом.
Мой код выглядит следующим образом:
import numpy as np
def matrix_multiply(A,B):
row_A = len(A)
col_A = len(A[0])
row_B = len(B)
col_B = len(B[0])
if col_A != row_B:
return("Invalid matrices")
else:
result = np.zeros((col_B,row_A))
for i in range(row_A): # iterate through columns of Y
for j in range(col_B): # iterate through rows of Y
for k in range(col_A):
result[i][j] += A[i][k]*B[k][j]
return result
Моя ошибка:
Traceback (most recent call last): File "<stdin>", line 1, in <module>
File "<stdin>", line 13, in matrix_multiply
IndexError: index 1 is out of bounds for axis 0 with size 1
Я предполагаю, что это проблема с "результатом [i] [j] + = A [i] [k] * B [k] [j] "part.
Мой код отлично работает для любой матрицы другого размера, но когда есть один столбец, я получаю эту ошибку индекса.Что происходит?
Вот пример:
A = np.array([[1,2,3],[2,3,4]])
B = np.array([[2,3],[4,5],[5,6]])
matrix_multiply(A,B)
array([[25., 31.],
[36., 45.]])
Но когда я делаю ...
v = np.array([[4,3,1],[6,7,2]])
g = np.array([[3],[1],[4]])
matrix_multiply(v,g)
Я получаю ошибку.