2017-08-26 51 views
1

(Python) 任何人都可以請建議最簡單和最快的方式來填充一個csr矩陣A與另一個csr矩陣B的列的值是大小400k * 800k。 我的失敗的嘗試:用另一個csr矩陣的列填充一個空的CSR稀疏矩陣並對其進行切片

#x is a list of size 500 which contains the column numbers needed from B 
A=sparse.csr_matrix((400000,500)) 

for i in range(400000): 
    for j in range(500): 
     A[i,j]=B[i,x[j]] 

另外有一種簡單的方式在比例爲4分割矩陣B:1

回答

0

它有助於思考問題彷彿AB均密集陣列第一。如果我理解你的問題吧,你想要的東西,如:

A = B[:, x] 

事實證明,你可以做CSR相同的操作矩陣爲好,這是相當有效的。關鍵是要避免將值分配給現有的稀疏矩陣(特別是在CSR或CSC格式的情況下)。通過一次完成索引,scipy能夠使用更高效的方法。