Я следил за этим сообщением стекопотока по умножению матрицы csr на вектор
и внедрить его в python и получить список ошибок из диапазона.
Вот мой код:
def MatrixMultiplication(data,row_ptr,col_ptr,vec):
ResultMatrix =[]
vec_len = len(vec)
for i in range(0,vec_len):
ResultMatrix.insert(i,0)
for i in range(0,vec_len):
start, end = row_ptr[i], row_ptr[i + 1]
for k in range(start, end):
ResultMatrix[i] = ResultMatrix[i]+data[k]*vec[col_ptr[k]]
return ResultMatrix
data = [2, 4, 7, 1, 3, 2]
row_ptr = [2,3 ,5, 5 ,6]
col_ptr = [1 ,3, 4, 0, 3, 3]
vec = [2,3, 5, 4, 2]
MatrixMultiplication(data,row_ptr,col_ptr,vec)
Пожалуйста, помогите мне, где я иду не так.
Вывод должен быть: [22 14 14 0 8]
Ошибка:
IndexError: list index out of range
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<command-338158343473691> in <module>()
----> 1 MatrixMultiplication(data,row_ptr,col_ptr,vec)
<command-3658506804172571> in MatrixMultiplication(data, row_ptr, col_ptr, vec)
5 ResultMatrix.insert(i,0)
6 for i in range(0,vec_len):
----> 7 start, end = row_ptr[i], row_ptr[i + 1]
8 for k in range(start, end):
9 ResultMatrix[i] = ResultMatrix[i]+data[k]*vec[col_ptr[k]]
IndexError: list index out of range
FYI:
последний элемент row_ptr будет размером списка данных