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

Auf*_*ind 4 python max matrix scipy sparse-matrix

鉴于形状R类型scipy.sparse.coo_matrix的稀疏矩阵,1.000.000 x 70.000我发现了这一点

row_maximum = max(R.getrow(i).data)
Run Code Online (Sandbox Code Playgroud)

会给我第i行的最大值.

我现在需要的是与该值对应的索引row_maximum.

任何想法如何实现?

在此先感谢您的任何建议!

War*_*ser 8

getrow(i)返回1 xn CSR矩阵,该矩阵具有一个indices属性,该属性给出属性中相应值的行索引data.(我们知道形状是1 xn,因此我们不必处理indptr属性.)所以这将起作用:

row = R.getrow(i)
max_index = row.indices[row.data.argmax()] if row.nnz else 0
Run Code Online (Sandbox Code Playgroud)

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