用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