Странное поведение Numpy сортировки - PullRequest
0 голосов
/ 22 мая 2019

Кажется, что NumPy argsort работает с лексикографически на поплавках:

npSorted = np.array([[ "a", 12],
  ["B", 8 ],
  ["D", -0.96605562],
  [ "e", -0.28283675],
  ["F",  0.22764316],
  ["T",  0.27752806],
  ["G",  0.36523876],
  ["H",  0.50737573],
  [ "ME",  0.93213482]])

npSorted = npSorted[npSorted[:, 1].argsort()]

for sortedStock in npSorted:
  print(sortedStock[0], ": ", sortedStock[1])

Результат:

e :  -0.28283675
D :  -0.96605562
F :  0.22764316
T :  0.27752806
G :  0.36523876
H :  0.50737573
ME :  0.93213482
a :  12
B :  8

Так как мне сортировать, чтобы получить 0,5 <8 <12? </p>

Спасибо

1 Ответ

2 голосов
/ 22 мая 2019

Точно так же, как сказал @ Tomothy32, не используйте разнородные данные. Вот что вы можете сделать, чтобы это исправить. добавить .astype (np.float) перед сортировкой

npSorted = npSorted[npSorted[:, 1].astype(np.float).argsort()]
# D :  -0.96605562
# e :  -0.28283675
# F :  0.22764316
# T :  0.27752806
# G :  0.36523876
# H :  0.50737573
# ME :  0.93213482
# B :  8
# a :  12
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...