在已经计算出沿稀疏矩阵的轴的argmax之后,取沿该轴的最大值

时间:2018-10-10 15:08:03

标签: python scipy sparse-matrix

我想同时沿scipy.sparse矩阵X的轴取argmax和max

>>> type(X)
scipy.sparse.csr.csr_matrix

>>> idx = X.argmax(axis=0)

>>> maxes = X.max(axis=0)

我不想两次计算最大值,但是我不能像这样X是一个np.ndarray那样使用same approach。如何将argmax中的索引应用于X

1 个答案:

答案 0 :(得分:1)

我设法实现了您想要调整链接方法的结果:

from scipy.sparse import csr_matrix

a = [[4, 0, 0], [0, 3, 0], [0, 0, 1]]
a = csr_matrix(a)
idx = a.argmax(axis=0)
m = a.shape[1]
a[idx,np.arange(m)[None,:]].toarray()

输出:

array([[4, 3, 1]], dtype=int32)