Я использую scipy
для матричного умножения разреженной матрицы. По какой-то причине метод .power()
не работает для разреженной матрицы. Я проверил это тремя способами:
Вот мой код:
import scipy as sp
import scipy.sparse
Метод 1. Умножение простой матрицы
row = np.array([0, 3, 1, 0])
col = np.array([0, 3, 1, 2])
data = np.array([4, 5, 7, 9])
P1 = sp.sparse.coo_matrix((data, (row, col)), shape=(4, 4))
#Method 1
P1.power(4).todense() #gives wrong result
Результат:
matrix([[ 256, 0, 6561, 0], #6561 isn't right
[ 0, 2401, 0, 0],
[ 0, 0, 0, 0],
[ 0, 0, 0, 625]], dtype=int32)
Метод 2:
P = P1.copy()
#calculate ^4
for loop in range(2):
P = P.dot(P)
P.todense()
Вывод
matrix([[ 256, 0, 576, 0],
[ 0, 2401, 0, 0],
[ 0, 0, 0, 0],
[ 0, 0, 0, 625]], dtype=int32)
Метод 3
P1.dot(P1).dot(P1).dot(P1).todense()
Вывод:
matrix([[ 256, 0, 576, 0],
[ 0, 2401, 0, 0],
[ 0, 0, 0, 0],
[ 0, 0, 0, 625]], dtype=int32)
Метод 4:
Результат можно проверить по адресу этот сайт (symbolab.com)
Другие темы по этой теме (Поэлементная мощь scipy.sparse matrix, Мощность матрицы для разреженной матрицы в python), сосредоточьтесь на < em> как выполнить матричное умножение. Буду признателен за любую помощь.
p.power(2)
- это поэлементная мощность.9**4
=6561
. Об этом также говорится в первой связанной вами теме (даже в заголовке). - person Zinki   schedule 19.10.2018