【问题标题】:Iterating over scipy sparse matrix by column按列迭代 scipy 稀疏矩阵
【发布时间】:2012-05-15 13:40:39
【问题描述】:

我试图弄清楚如何逐列遍历 scipy 稀疏矩阵。我正在尝试计算每列的总和,然后按该总和对该列的成员进行加权。我想做的基本上是:

for i=0 to #columns
  for j=0 to #rows
    sum=sum+matrix[i,j]
  for j=0to #rows
    matrix[i,j]=matrix[i,j]/sum

我在示例中看到的所有迭代器都一次迭代整个矩阵,而不是按列进行。有没有办法做我想做的事?

【问题讨论】:

    标签: python numpy scipy sparse-matrix


    【解决方案1】:

    Scipy 稀疏矩阵有自己的sum 方法,您可以使用它。例如:

    A=sp.lil_matrix((5,5))
    b=1+np.arange(0,5)
    A.setdiag(b[:-1],k=1)
    A.setdiag(b)
    
    
    print(A)
      (0, 0)        1.0
      (0, 1)        1.0
      (1, 1)        2.0
      (1, 2)        2.0
      (2, 2)        3.0
      (2, 3)        3.0
      (3, 3)        4.0
      (3, 4)        4.0
      (4, 4)        5.0
    
    f=A.sum(axis=0)
    
    print(f)   
    [[1. 3. 5. 7. 9.]]
    

    返回的总和是密集的numpy.matrix,您可以将其转换为比例因子:

    print(A/f)
    [[1.         0.33333333 0.         0.         0.        ]
     [0.         0.66666667 0.4        0.         0.        ]
     [0.         0.         0.6        0.42857143 0.        ]
     [0.         0.         0.         0.57142857 0.44444444]
     [0.         0.         0.         0.         0.55555556]]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-19
      • 2017-03-26
      • 2017-03-31
      • 2023-04-10
      • 2017-07-21
      • 2011-11-28
      相关资源
      最近更新 更多