У меня разреженная матрица. Мне нужно отсортировать эту матрицу построчно и создать другую [разреженную] матрицу. Код может объяснить это лучше:
# for `rand` function, you need newer version of scipy.
from scipy.sparse import *
m = rand(6,6, density=0.6)
d = m.getrow(0)
print d
(0, 5) 0.874881629788
(0, 4) 0.352559852239
(0, 2) 0.504791645463
(0, 1) 0.885898140175
У меня есть эта матрица m
. Я хочу создать новую матрицу с отсортированной версией m. Новая матрица
содержит 0-ю строку, подобную этой.
new_d = new_m.getrow(0)
print new_d
(0, 1) 0.885898140175
(0, 5) 0.874881629788
(0, 2) 0.504791645463
(0, 4) 0.352559852239
Таким образом, я могу получить, какой столбец больше и т. д.:
print new_d.indices
array([1, 5, 2, 4])
Конечно, каждая строка должна быть отсортирована, как указано выше, независимо.
У меня есть одно решение этой проблемы, но оно не элегантное.