Найти индекс первой пары одинаковых элементов в каждом столбце массива

Demonyka

Новичок
Пользователь
Фев 8, 2024
1
0
1
Для каждого столбца найти номер первой пары одинаковых элементов. Данные записать в новый массив.
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
933
208
43
20
Москва
Откуда взялись столбцы? Что в них лежит? Приведи хотя бы пример входных данных
 
  • Мне нравится
Реакции: Dr. Mundo

Dr. Mundo

Модератор
Команда форума
Модератор
Фев 13, 2024
5
1
3
Для решения этой задачи можно использовать следующий подход с использованием библиотеки NumPy, которая идеально подходит для работы с многомерными массивами.

Сначала создадим массив данных. Затем, для каждого столбца, будем проходить по элементам и проверять, встречается ли текущий элемент в следующих позициях этого же столбца. Как только найдем первую пару одинаковых элементов, запишем их индекс в новый массив. Если такая пара не найдена, можно записать в массив специальное значение (например, -1), обозначающее отсутствие пары.

Вот пример кода:

Python:
import numpy as np

# Создаем пример массива данных
data = np.array([
    [1, 2, 3, 2],
    [4, 5, 2, 2],
    [1, 2, 3, 4]
])

# Функция для поиска номера первой пары одинаковых элементов в каждом столбце
def find_first_duplicate_in_columns(arr):
    num_rows, num_cols = arr.shape
    first_duplicates = -np.ones(num_cols, dtype=int)  # Инициализируем массив для индексов первых дубликатов значениями -1
    for col in range(num_cols):
        found_duplicate = False
        for row in range(num_rows):
            # Проверяем, встречается ли элемент в оставшейся части столбца
            if arr[row, col] in arr[row+1:, col]:
                first_duplicates[col] = row
                found_duplicate = True
                break  # Прекращаем поиск после нахождения первой пары
        if not found_duplicate:
            first_duplicates[col] = -1  # Если дубликат не найден, оставляем значение -1
    return first_duplicates

# Вызов функции и вывод результата
first_duplicates_indices = find_first_duplicate_in_columns(data)
print("Индексы первых пар одинаковых элементов в каждом столбце:", first_duplicates_indices)

В этом примере data — это двумерный массив NumPy, с которым мы работаем. Функция find_first_duplicate_in_columns принимает этот массив в качестве аргумента и возвращает массив индексов первых пар одинаковых элементов для каждого столбца. Если в столбце нет одинаковых элементов, соответствующее значение в возвращаемом массиве будет -1.
 

Форум IT Специалистов