numpy argsort () возвращает неверный результат - PullRequest
0 голосов
/ 31 марта 2020
a = np.array(['0.4369217975174501', '9.813778651781852e-05', '0.3682690408090255'])
print(a[a.argsort()])

Вывод:

['0.3682690408090255' '0.4369217975174501' '9.813778651781852e-05']

в то время как должно быть:

['9.813778651781852e-05' '0.3682690408090255' '0.4369217975174501']

Почему это так? Как я мог это исправить?

1 Ответ

4 голосов
/ 31 марта 2020

вы пытаетесь сравнить строки

 a = np.array(['0.4369217975174501', '9.813778651781852e-05', '0.3682690408090255'])
 b = np.array(list(map(float, ['0.4369217975174501', '9.813778651781852e-05', '0.3682690408090255'])))
 print(a[a.argsort()])
 print(b[b.argsort()])

    ['0.3682690408090255' '0.4369217975174501' '9.813778651781852e-05']
    [9.81377865e-05 3.68269041e-01 4.36921798e-01]

лучше от Дж. Андерсона

print(a[a.astype(float).argsort()])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...