Scipy.sparse.csr_matrix медленно на матрице со значениями с плавающей запятой - PullRequest
0 голосов
/ 04 июля 2019

Я пытаюсь умножить две разреженные матрицы или разреженную матрицу на плотную. Размер матрицы примерно 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]

Этот код хорош для разреженной матрицы, но занимает больше времени для плотной матрицы. Может ли быть какой-либо оптимизированный код, который хорошо работает как для разреженной, так и для плотной матрицы

...