#python #arrays #python-3.x #list #compare
#python #массивы #python-3.x #Список #Сравнить
Вопрос:
Я хочу сравнить 2 массива (столбец 0 data_names и species) и добавить значение, если его нет в species . data_size — это длина data_names .
species = np.array([])
for i in range(data_size):
if not data_names[i,0] in species :
np.insert(species, str, data_names[i,0])
Я пробовал много способов, но у меня всегда ошибка, поскольку
‘<‘ не поддерживается между экземплярами ‘type’ и ‘int’
Можете ли вы мне помочь, я не вижу, как это сделать. Спасибо
Ответ №1:
Я бы сделал это так:
# create simple list
species = []
# iterate
for i in range(data_size):
# check name not in list
if data_names[i,0] not in species:
# add name to list
species.append(data_names[i,0])
# convert to numpy array
output = np.array(species)
Ответ №2:
Вторым параметром insert
метода может быть целое число, фрагмент или последовательность целых чисел. Он представляет индекс, в который вы хотите вставить свой элемент (ы). Вы передаете str
ключевое слово, которое в python относится к строковому типу. Поэтому интерпретатор жалуется на это. Более того, insert
метод возвращает новый массив с добавленным вами элементом, но в вашем фрагменте вы не присваиваете этот новый элемент переменной, поэтому результат не будет иметь эффекта. Если вы хотите добавить элемент в первую позицию, вы можете сделать:
for i in range(data_size):
if not data_names[i,0] in species :
species=np.insert(species, 0, data_names[i,0])
ссылка: https://numpy.org/doc/stable/reference/generated/numpy.insert.html