Given a matrix of type `scipy.sparse.coo_matrix` how to determine index and value of maximum of each row?

匆匆过客 提交于 2019-12-07 07:03:32

问题


Given a sparse matrixR of type scipy.sparse.coo_matrix of shape 1.000.000 x 70.000 I figured out that

row_maximum = max(R.getrow(i).data)

will give me the maximum value of the i-th row.

What I need now is the index corresponding to the value row_maximum.

Any ideas how to achieve that?

Thanks for any advice in advance!


回答1:


getrow(i) returns a 1 x n CSR matrix, which has an indices attribute that gives the row indices of the corresponding values in the data attribute. (We know the shape is 1 x n, so we don't have to deal with the indptr attribute.) So this will work:

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

We have to deal with the case where row.nnz is 0 separately, because row.data.argmax() will raise an exception if row.data is an empty array.




回答2:


use numpy.argmax (or scipy.argmax which is the same thing)

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


来源:https://stackoverflow.com/questions/9268710/given-a-matrix-of-type-scipy-sparse-coo-matrix-how-to-determine-index-and-valu

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!