#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]