Как можно сократить время вычислений при определении уникальности для большого числа матриц? - PullRequest
0 голосов
/ 31 марта 2020

Скажем, я создал простое l oop в Python, которое производит матрицы x, y = 10x10, с каждой позицией случайным целым числом от 1 до 4 (с использованием некоторого rng). В l oop каждый раз, когда создается матрица, код проверяет все ранее сохраненные матрицы на уникальность: если для некоторой ранее сохраненной матрицы все позиции имеют равные значения, матрица отбрасывается, но если любое значение отличается (сравнение все ранее сохраненные матрицы) матрица сохраняется, и l oop продолжается.

Что я хочу выяснить, так это в среднем после того, как через много итераций будет получена равная матрица в порядке эксперимента. Как вы, возможно, можете себе представить, это может занять некоторое время: проблема, с которой я сталкиваюсь, заключается в том, что код становится все более медленным после того, как было создано несколько сотен матриц. Я бы хотел, чтобы go быстрее:)

Код функции, который я использую для определения уникальности

def Unique(A,B):
    for i in range(x):
        for j in range(y):
            if (A[i][j] != B[i][j]):
                return 0
    return 1

, и именно так я получаю доступ и читаю файлы

book2 = xlrd.open_workbook('Matrix_'+str(a)+'.xlsx')
sheet2 = book2.sheet_by_name('Sheet1')
data2 = [[sheet2.cell_value(row, column) for column in range(sheet2.ncols)] for row in 
range(sheet2.nrows)]
data2 = np.array(data2)

У меня такое чувство, что, вероятно, это можно сделать гораздо эффективнее, но я мог бы помочь с этим, заранее спасибо!

...