Я использую Python 3. Проблема с numpy.argsort ().
У меня есть два массива (скажем, A и B). Я хочу упорядочить значения в массиве A по значениям в массиве B. Я использую этот код.
A_ordered = A[B.argsort()]
В массиве B есть хорошие шансы того, что возникнут связи. Иногда даже каждое значение в массиве B идентично.
Когда в B есть связи, я не хочу, чтобы значения в A меняли порядок. Следовательно, когда значения в B связаны, я ожидаю, что они сохранят свой относительный порядок индексов, используя .argsort ().
Вот пример проблемы, когда все значения в B связаны. Индексы, заданные np.argsort (), выглядят так, как будто они перемешаны.
B = np.empty(23000) #creating empty array
B.fill(0.5) #filling it with equal values of 0.5
print(B.argsort()) #trying to sort
Out[176]: array([ 0, 15338, 15337, ..., 7660, 7680, 22999], dtype=int64)
Поскольку все значения в B равны, я ожидаю, что
Out[176]: array([ 0, 1, 2, ..., 22997, 22998, 22999], dtype=int64)
Я не хочуиспользуйте метод ниже для сортировки A на основе B, потому что в случае связей, значения A будут использоваться для сортировки.
A = [x for _,x in sorted(zip(B,A))]
Большое спасибо!