Сортировка строк массива по другому массиву в Python

Я пытаюсь отсортировать строки одного массива по значениям другого. Например:

import numpy as np
arr1 = np.random.normal(1, 1, 80)
arr2 = np.random.normal(1,1, (80,100))

Я хочу отсортировать arr1 в порядке убывания и сохранить текущую связь между arr1 и arr2 (т. Е. После сортировки обоих, строка arr1 [0] и arr2 [0,:] совпадают).

32
задан nbro 17 October 2017 в 12:52
поделиться

1 ответ

Используйте функцию zip: zip( *sorted( zip(arr1, arr2) ) ) Это сделает то, что вам нужно.

Теперь объяснение: zip(arr1, arr2) объединит два списка, поэтому у вас есть [(0, [... список 0 ...]), (1, [... список 1. ..]), ...] Далее мы запускаем sorted(...), который по умолчанию сортируется на основе первого поля в кортеже. Затем мы снова запускаем zip(...), который берет кортежи из отсортированного и создает два списка, из первого элемента в кортеже (из arr1) и второго элемента (из arr2).

6
ответ дан 27 November 2019 в 20:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: