В идеале я ищу функцию в чистом Python, которая похожа на numpy.argsort в том смысле, что она возвращает только список отсортированных индексов, оставляя исходные массивы нетронутыми, но должна иметь возможность сортировать данные, содержащиеся в несколькихмассивы.
Пример:
>>> names = ['xavier', 'bob', 'billy', 'jene', 'samson']
>>> ages = [15, 32, 63, 32, 15]
>>>indexes = sort by ages and then by names
[4, 0, 1, 3, 2]
>>> for i in indexes:
>>> print "Name", names[i]
>>> print "Age", ages[i]
Функция сортировки не может создавать дополнительные структуры данных, что означает невозможность понимания списка или таких функций, как zip.Каждый массив состоит из 5 миллионов объектов, генерация сжатых версий массивов увеличивает требования к памяти как минимум в 3 раза. Использование понимания списка, такого как сортировка (.. key = lambda x: (names [x], ages [x]))) вызывает замедление, такое как сортировка занимает более минуты (и требования к памяти для создания этих промежуточных кортежей)
Пока я хочу сортировать только по одному массиву, это быстродостаточно, однако, поскольку список индексов не знает о других массивах, я не могу вызвать несколько операций «сортировки», как если бы у меня была сжатая версия двух списков.