给定一个类型为`scipy.sparse.coo_matrix`的矩阵如何确定每行的最大值的索引和值?

时间:2012-02-13 22:01:51

标签: python matrix scipy max sparse-matrix

给定形状为R的{​​{1}}类型的稀疏矩阵scipy.sparse.coo_matrix,我发现

1.000.000 x 70.000

将给出第i行的最大值。

我现在需要的是与row_maximum = max(R.getrow(i).data) 值对应的索引。

任何想法如何实现?

提前感谢您的任何建议!

2 个答案:

答案 0 :(得分:8)

getrow(i)返回1 x n CSR矩阵,该矩阵具有indices属性,该属性提供data属性中相应值的行索引。 (我们知道形状是1 x n,所以我们不必处理indptr属性。)所以这将起作用:

row = R.getrow(i)
max_index = row.indices[row.data.argmax()] if row.nnz else 0

我们必须分别处理row.nnz为0的情况,因为如果row.data.argmax()是一个空数组,row.data将引发异常。

答案 1 :(得分:-1)

使用numpy.argmax(或scipy.argmax,这是相同的事情)

index_of_maximum = scipy.argmax(R.getrow(i).data)