python - 按列迭代 scipy 稀疏矩阵

标签 python numpy scipy sparse-matrix

我正在尝试弄清楚如何按列迭代 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

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

最佳答案

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]]

关于python - 按列迭代 scipy 稀疏矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10475457/

相关文章:

python - Healpy:从数据到 Healpix map

python - 使用python存储matlab文件

python - 如何在程序中停止 Python Kafka Consumer?

Numpy 安装 Mac Osx Python

python - 在 python numpy 中指定二维数组的大小

python - 我如何在 Go 中做类似 numpy arange 的事情?

python - Pandas 中的一致性表(每行对的每行之间的 Pearson 相关性)

python - 如何在 R blogdown (RMarkdown) 中格式化代码块

python - 在 matplotlib 中绘制 csv 文件

python - pdfminer pdf2text 输出 'FF'