У меня разреженная матрица с более чем 50% разреженными записями. Я пытаюсь вычислить его умножение матриц с помощью scipy.sparse и numpy.matmul. По иронии судьбы numpy.matmul дает меньшее время умножения, чем scipy.sparse как на плотных, так и на разреженных матрицах.
import scipy
import time
start=time.time()
SS=scipy.sparse.csr_matrix(grad_shaped)*scipy.sparse.csr_matrix(numpy.transpose(grad_shaped))
SS1=SS.todense()
end=time.time()
print(end-start)
start=time.time()
SS2=numpy.matmul(grad_shaped[0],numpy.transpose(grad_shaped[0]))
end=time.time()
print(end-start)
У меня есть матрица данных с плавающей точкой. Нули присутствуют как 0.0. Есть ли какая-то разница, ведущая к увеличению времени? Я пробовал это с переменным размером матриц. По мере увеличения размера матрицы numpy.matmul по-прежнему быстрее, чем scipy.sparse.csr