내가 사용한 형식은 csr 스파 스 매트릭스이며, add 및 dot opertor에 대한 가장 빠른 스파 스 구조로 권장됩니다. 나는 그것의 성능을 np.array의 add와 dot 연산자와 비교했다. 그러나 스파 스 매트릭스에 대한 컴퓨팅이 밀도가 높은 형식의 경우보다 훨씬 느립니다. 왜 그럴까요? 스파 스 컴퓨팅을 구현하는 효율적인 방법이 있습니까?왜 파이썬에서 희소 매트릭스 컴퓨팅이 너무 느림
import numpy as np
import scipy.sparse as sp
import random
#%% generate dense vector
vector_length = 10000
nonzero_term = 200
x = np.zeros((vector_length,))
y = np.zeros((vector_length,))
index = random.sample(range(vector_length), nonzero_term)
x[index] = np.random.rand(nonzero_term)
index = random.sample(range(vector_length), nonzero_term)
y[index] = np.random.rand(nonzero_term)
#%% transform to sparse vector
x_sp = sp.csr_matrix(x)
y_sp = sp.csr_matrix(y)
#%% test
# dense add
%timeit [x + y]
# sparse add
%timeit [x_sp + y_sp]
# dense dot
%timeit [x.dot(y)]
# sparse dot
%timeit [x_sp.dot(y_sp.T)]
및 결과가 조작
100000 loops, best of 3: 6.06 µs per loop
10000 loops, best of 3: 97.8 µs per loop
100000 loops, best of 3: 3.45 µs per loop
1000 loops, best of 3: 225 µs per loop