У меня есть разреженная матрица А (равной 10 * 3 в плотном), таких как:Python разреженная матрица получить максимальные значения и индекс
print type(A)
<class scipy.sparse.csr.csr_matrix>
print A
(0, 0) 0.0160478743808
(0, 2) 0.0317314165078
(1, 2) 0.0156596521648
(1, 0) 0.0575683686558
(2, 2) 0.0107481166871
(3, 0) 0.0150580924929
(3, 2) 0.0297743235876
(4, 0) 0.0161931803955
(4, 2) 0.0320187296788
(5, 2) 0.0106034409766
(5, 0) 0.0128109177074
(6, 2) 0.0105766993238
(6, 0) 0.0127786088452
(7, 2) 0.00926522256063
(7, 0) 0.0111941023699
В максимальных значениях для каждого столбца:
print A.max(axis=0)
(0, 0) 0.0575683686558
(0, 2) 0.0320187296788
Я хотел бы получить индекс , соответствующий значению столбца. Я знаю, что
A.getcol(i).tolist()
вернет мне список каждого столбца, который позволит мне использовать функцию argmax(), но этот способ очень медленный. Мне интересно, есть ли способ спуска?
Является ли ваша матрица способной вписываться в память? Выполнение 'A.todense(). Argmax (axis = 0)' будет делать то, что вы хотите, если возможно «A.todense()». – kbrose
'argmax' будет хорошим дополнением к scipy разреженным матрицам. Тем временем: можете ли вы переключиться на формат CSC? Если это так, есть способ достаточно эффективно получить argmax столбцов. –
@kbrose, .todense() невозможно, так как размер данных не соответствует памяти. –