csc_matrix()的結果不對比預期大

用csc_matrix()的時候遇到個問題,一個位置本該爲1的卻是其他數,通常比預期大,造成結果不對。

查了存儲數的data,裏面也沒有這個數。

後來終於發現,如果有相同索引,它的值是累加的,這就造成結果不對。

看看實例

------------------------------------------------------------------------

使用csc_matrix()的最簡單版本

row, col, data

r = [1,2,3,4]
l = [1,2,3,4]
v = [1,1,1,1]
csc_matrix((v, (r, l))).toarray()

結果

array([[0, 0, 0, 0, 0],
       [0, 1, 0, 0, 0],
       [0, 0, 1, 0, 0],
       [0, 0, 0, 1, 0],
       [0, 0, 0, 0, 1]], dtype=int64)

這結果正確,1,1對應1;    2,2對應 1 

換個數

r = [1,2,3,4,1]
l = [1,2,3,4,1]
v = [1,1,1,1,1]
csc_matrix((v, (r, l))).toarray()

現在索引[1, 1]的位置對應了兩次,結果就是1+1=2

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章