В python сравните два строковых значения массива и добавьте значение в массив, если нет

#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