Я пытаюсь умножить две разреженные матрицы или разреженную матрицу на плотную. Размер матрицы примерно 128х256. Их значения 80% равны 0, а остальные являются значениями с плавающей запятой примерно с 8 цифрами.
Мне известна функция scipy.sparse. Но я не хочу использовать эту функцию. Может кто-нибудь помочь с кодом в Python.
WW_sp=numpy.zeros([len(X),Y.shape[1]])
for i in range(len(X)):
A=numpy.where(X[i]!=0)
for j in range(Y.shape[1]):
B=numpy.where(Y[:,j]!=0)
for k in numpy.intersect1d(A,B):
WW_sp[i][j]+=X[i][k]*Y[k][j]
Этот код хорош для разреженной матрицы, но занимает больше времени для плотной матрицы. Может ли быть какой-либо оптимизированный код, который хорошо работает как для разреженной, так и для плотной матрицы