Странная сортировка работает странно

#numpy

Вопрос:

У меня огромный data = np.array([1000, 2500, 1400, 1800, 900, 4200, 2200, 1900, 3500]) . Мне нужно добавить пользовательский ввод и отсортировать данные.

 import numpy as np  data = np.array([1000, 2500, 1400, 1800, 900, 4200, 2200, 1900, 3500])  new_data = input() data = np.append(data, new_data) data = np.sort(data) print(data)  

Без добавления у меня есть обычный отсортированный массив, но когда я его использую, у меня есть это

 ['1000' '1400' '1800' '1900' '2200' '2500' '3500' '4200' '654' '900']  

Я заметил, что номер xxx появляется в конце списка. цифра xxxx в качестве входных данных появляется там, где она должна быть

 ['1000' '1400' '1800' '1900' '2200' '2222' '2500' '3500' '4200' '900']  

Комментарии:

1. Это не sort то, что создает проблемы. Посмотрите data после append этого . И еще new_data до этого.

2. Новые входные данные являются строками, поэтому объединенные данные сортируются как строки. Преобразуйте их в числа, прежде чем добавлять.

Ответ №1:

Тип данных Input() -строка. Вот почему, когда вы добавляете его в массив, он рассматривает каждый элемент как строку и сортирует их по первому алфавиту, а затем по последующим.

Проверьте тип данных до и после —

 #BEFORE APPENDING -  gt;gt;type(data[3]) numpy.int64  #AFTER APPENDING -  gt;gt;type(data[3]) numpy.str_  

Вместо этого преобразуйте входные данные int в или float сначала —

 import numpy as np  data = np.array([1000, 2500, 1400, 1800, 900, 4200, 2200, 1900, 3500])  new_data = int(input()) #lt;---- Look here! data = np.append(data, new_data) data = np.sort(data) print(data)  
 2222 [ 900 1000 1400 1800 1900 2200 2222 2500 3500 4200]