векторы повторения чисел в группе 20 матриц

 имеем группу из 20 матриц  - 10 на 10
матрицы заполнены числами от 0 до 100

нужно сделать список всех векторов повторений цифр в числах

например есть числа в разных матрицах ->

12 25 34 10
06 40 42 15
33 14 17 77
02 24 18 90

векторами будут числа
12 -25   12 -42   25 -15  40 -42
02 -24   17 -77   10 -06  15 -14  34 -40
и так далее по этой логики отбора данных пар чисел


 =>


Это интересная задача

Чтобы решить ее, я предлагаю следующий алгоритм кода:

Создайте пустой список vectors для хранения векторов повторений.
Создайте пустой словарь num_to_indices для хранения индексов матриц, где встречается каждое число.

Переберите каждую матрицу и для каждого числа в ней:

Если число уже есть в num_to_indices, то добавьте к соответствующему списку индексов текущий индекс матрицы.

Если числа нет в num_to_indices, то создайте для него новый список индексов с текущим индексом матрицы.

Переберите каждый список индексов в num_to_indices и для каждого списка:
Создайте все возможные пары индексов из списка (например, если список индексов [0, 1, 2], то пары будут (0, 1), (0, 2), (1, 2)).

Для каждой пары индексов создайте вектор повторений, используя соответствующие значения из матриц по индексам.

Добавьте вектор повторений в список vectors.
Возвращайте список vectors.


Вот пример кода на Python, реализующий этот алгоритм:



 *


import itertools

# матрицы 10x10 с числами от 0 до 100
matrices = [... 20 matrices ...]

vectors = []
num_to_indices = {}

for i, matrix in enumerate(matrices):
    for j, num in enumerate(matrix):
        if num not in num_to_indices:
            num_to_indices[num] = [i]
        else:
            num_to_indices[num].append(i)

for num, indices in num_to_indices.items():
    pairs = list(itertools.combinations(indices, 2))
    for pair in pairs:
        matrix1 = matrices[pair[0]]
        matrix2 = matrices[pair[1]]
        vector = (matrix1[j], matrix2[j])
        vectors.append(vector)

print(vectors)




  *




В этом коде мы используем библиотеку itertools для создания всех возможных пар индексов из списка индексов.
Затем мы создаем вектор повторений, используя соответствующие значения из матриц по индексам.

Обратите внимание, что в этом коде мы предполагаем, что матрицы хранятся в списке matrices, а каждый элемент списка - это отдельная матрица 10x10.

Если ваш формат данных отличается, вам нужно будет адаптировать код соответственно.


Рецензии