Возьмите макс вдоль оси разреженной матрицы после того, как уже вычислили argmax вдоль этой оси - PullRequest
0 голосов
/ 10 октября 2018

Я хочу взять и argmax, и max по оси scipy.sparse matrix X

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

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

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

Я не хочу вычислять max дважды, но я могу ' использовать тот же подход к этому, как если бы X был np.ndarray.Как я могу применить индексы от argmax к X?

1 Ответ

0 голосов
/ 10 октября 2018

Мне удалось добиться результата, который вы хотите адаптировать, который вы связали:

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)
...