import numpy as np
arr1=np.array(['102.0','135.0','135.0','152.0','93.0','95.0'])
print(arr1)
arr1.sort()
print(arr1)
print()
arr2=np.array(['86.0','82.0','84.0','87.0','95.0','89.0'])
print(arr2)
arr2.sort()
print(arr2)
Первый массив не отсортирован, а второй отсортирован, почему?. не могу найти ошибку.






Функция sort правильно сортирует только целые числа, поэтому для строк она сортирует по первому символу, поэтому те, что больше сотни, будут перед теми, которые равны девяноста с чем-то, способ исправить это - изменить их на целые числа:
import numpy as np
arr1=np.array(['102.0','135.0','135.0','152.0','93.0','95.0'])
arr1 = arr1.astype(float)
print(arr1)
arr1.sort()
print(arr1)
print()
arr2=np.array(['86.0','82.0','84.0','87.0','95.0','89.0'])
arr2 = arr2.astype(float)
print(arr2)
arr2.sort()
print(arr2)
Как упомянул @juanpa.arrivillaga:
сортируется лексикографически по всем символам
Вы сортируете строки, функция сортировки правильно сортирует элементы строки (например, «102.0» предшествует «93.0»). Если вы хотите правильно сортировать целые числа, удалите двойные кавычки вокруг всех ваших элементов:
arr1=np.array([102.0,135.0,135.0,152.0,93.0,95.0])
arr2=np.array([86.0,82.0,84.0,87.0,95.0,89.0])
В общем, предположим, что данные, которые люди предоставляют в качестве входных данных, являются примером ... поэтому вместо того, чтобы сосредоточиться на решении примера, предположим, что предоставленные данные изначально не создаются во время выполнения, как в примере, и что-то предоставляется пользователю в качестве входных данных из другого ресурса. Спасибо за мой голос, потому что ваше объяснение коснулось проблемы. Удачи!
"сортирует по первому символу" лексикографически сортирует по всем символам