Очень часто мне нужно получить индексы элементов из numpy массивов, удаленных за один шаг. где я делаю операцию (где argsort, ...) я получаю индексы, затем я делаю вторую операцию, которая возвращает индексы на основе предыдущих индексов ...
Теперь я хочу получить через 2nd lvl индексирует работу с исходными данными и возвращает lvl1 indexes.
Fe
rows = np.where( ~np.all(ary == 0, axis=1) )
top5 = ary[rows].sum(axis=1).argsort()[:5]
Out[66]: array([ 2, 7, 22, 16, 33])
In [70]: rows[0][top5]
Out[70]: array([ 115, 313, 1232, 1063, 1550])
In [71]: ary[rows[0][top5]]
array([[0.4 , 0. ],
[0.4 , 0. ],
[0.4 , 0. ],
[0.42, 0. ],
[0.45, 0. ]])
это упрощено, чтобы заставить его работать .. мне нужно сделайте также некоторую фильтрацию и получите промежуточные col-idxs
это выглядит слишком сложным для меня ... должен быть лучший способ ...
Как вы справляетесь с такими косвенными случаями ... проще ..
rows = np.where(...)
top5 = ary[rows].argsort()[:5]
ary[rows[0][top5]]