0
我有一個scipy sparse CSR
矩陣的大小2M x 50k與200M非零值(100每行)。我需要通過一個(隨機分佈的)索引(它是一個熊貓Series
)對它的120k行進行切片,然後將該子矩陣乘以大小爲1x50k的稀疏向量(也有100個非零值)。SciPy稀疏CSR矩陣的快速切片和乘法
我這樣做:
slice = matrix[index.tolist(), :]
result = slice.dot(vector.T).T.toarray()[0] # returns 1x120k array
縱切需要0.7s
(慢),然後乘採取0.05s
。
相反,我可以先乘以整個矩陣,然後切片結果:
result = matrix.dot(vector.T).T.toarray()[0]
result_sliced = result[index.tolist()] # returns 1x120k array
在這種情況下,乘法需要0.65s
然後切片需要0.015s
。
問題:
爲什麼是行的CSR矩陣的切片這麼慢?即使整個矩陣的乘法所花費的時間也比它少。
有沒有辦法來實現最終的結果更快?
有沒有辦法實現最終結果更快? –