假如我们定义了一个稀疏矩阵,如下所示:
import scipy as spyimport numpy as npN=4row=[1, 1, 1, 2, 2, 3, 3, 3, 0, 0]col=[2, 3, 3, 1, 3, 2, 3, 0, 3, 1]value=[11, 12, 13, 14, 15, 16,17, 18, 19, 10]A=spy.sparse.csc_matrix((value,(row,col)),shape=(N, N))PRint(A.todense())[[ 0 10 0 19] [ 0 0 11 25] [ 0 14 0 15] [18 0 16 17]]执行结果:
[[ 0 0 0 19] [ 0 0 11 25] [ 0 14 0 15] [18 0 16 17]]执行结果:
[[0 0 0 0] [0 0 0 0] [0 0 0 0] [1 0 0 0]]这都不是我们想要看到的结果!因为矩阵A的元素类型不对,需要改成float型!正确代码如下: 实现操作1:
import scipy as spyimport numpy as npN=4row=[1, 1, 1, 2, 2, 3, 3, 3, 0, 0]col=[2, 3, 3, 1, 3, 2, 3, 0, 3, 1]value=[11, 12, 13, 14, 15, 16,17, 18, 19, 10]A=spy.sparse.csc_matrix((value,(row,col)),shape=(N, N), dtype=np.dtype(float))A[0,1]=A[0,1]/12print(A.todense())期望结果:
[[ 0. 0.83333333 0. 19. ] [ 0. 0. 11. 25. ] [ 0. 14. 0. 15. ] [ 18. 0. 16. 17. ]]实现操作2:
import scipy as spyimport numpy as npN=4row=[1, 1, 1, 2, 2, 3, 3, 3, 0, 0]col=[2, 3, 3, 1, 3, 2, 3, 0, 3, 1]value=[11, 12, 13, 14, 15, 16,17, 18, 19, 10]A=spy.sparse.csc_matrix((value,(row,col)),shape=(N, N), dtype=np.dtype(float))for i in range(0, np.size(A, 0)): col_sum=np.sum(A[:,i]) A[:,i]=A[:,i]/col_sumprint(A.todense())期望结果:
[[ 0. 0.41666667 0. 0.25 ] [ 0. 0. 0.40740741 0.32894737] [ 0. 0.58333333 0. 0.19736842] [ 1. 0. 0.59259259 0.22368421]]新闻热点
疑难解答