相关疑难解决方法(0)

scipy稀疏矩阵中每行或每列的Argmax

scipy.sparse.coo_matrix.max给定轴,返回每行或每列的最大值.我想知道的不是值,而是每行或每列的最大值的索引.我还没有办法以有效的方式做到这一点,所以我很乐意接受任何帮助.

python scipy sparse-matrix

12
推荐指数
1
解决办法
3381
查看次数

查找 scipy 稀疏矩阵的一行中的前 n 个值

我有一个 CSR 格式的 scipy 稀疏矩阵。它的尺寸为 72665x72665,因此将此矩阵转换为稠密矩阵来执行运算是不切实际的(此矩阵的稠密表示大约为 40 gig)。该矩阵是对称的,有大约 8200 万个非零项 (~1.5%)。

我想要做的是,对于每一行,我想要获得最大 N 值的索引。如果这是一个 numpy 数组,我会这样做np.argpartition

    for row in matrix:
        top_n_idx = np.argpartition(row,-n)[-n:]
Run Code Online (Sandbox Code Playgroud)

对于稀疏矩阵,我可以做类似的事情吗?

python numpy scipy

4
推荐指数
1
解决办法
2483
查看次数

获取 scipy 稀疏矩阵中每一行的前 n 项

在阅读了这个类似的问题后,我仍然无法完全理解如何实施我正在寻找的解决方案。我有一个稀疏矩阵,即:

 import numpy as np
 from scipy import sparse
 arr = np.array([[0,5,3,0,2],[6,0,4,9,0],[0,0,0,6,8]])
 arr_csc = sparse.csc_matrix(arr)
Run Code Online (Sandbox Code Playgroud)

我想有效地获得每行的前 n 个项目,而不将稀疏矩阵转换为密集矩阵。最终结果应如下所示(假设 n=2):

 top_n_arr = np.array([[0,5,3,0,0],[6,0,0,9,0],[0,0,0,6,8]])
 top_n_arr_csc = sparse.csc_matrix(top_n_arr)
Run Code Online (Sandbox Code Playgroud)

scipy top-n python-3.x

2
推荐指数
1
解决办法
1976
查看次数

增加稀疏矩阵中前k个元素的值

我试图找到一种有效的方法,让我通过一些常数值增加稀疏矩阵的前k值.我目前正在使用以下代码,这对于非常大的矩阵来说非常慢:

a = csr_matrix((2,2)) #just some sample data
a[1,1] = 3.
a[0,1] = 2.

y = a.tocoo()
idx = y.data.argsort()[::-1][:1] #k is 1
for i, j in izip(y.row[idx], y.col[idx]):
    a[i,j] += 1
Run Code Online (Sandbox Code Playgroud)

实际上排序似乎很快,问题在于我的最后一个循环,我通过索引排序索引来增加值.希望有人知道如何加快速度.

python sorting numpy scipy sparse-matrix

1
推荐指数
1
解决办法
1012
查看次数

标签 统计

scipy ×4

python ×3

numpy ×2

sparse-matrix ×2

python-3.x ×1

sorting ×1

top-n ×1