Проверка значения close по элементам в матрице в python - PullRequest
0 голосов
/ 01 октября 2018

рассмотрим следующую матрицу:

[[true,false,false,true], 
 [false,false,true,false], 
 [true,true,false,true]]

Я хочу, чтобы python проверял значение элементов, близких к каждому элементу. Например, элемент [0] [0] имеет значение true и три элемента, окружающие еголожны, поэтому должно возвращаться что-то вроде [0,0,0].

     (element),false
     false,false

для элемента [0] [1] результат должен быть [1,0,0,1,0]:

     true,(element),false
     false,false,true

и т. Д. (Порядок 0 и 1 на самом деле не имеет значения, только их число). Я пытался использовать некоторые алгоритмы, чтобы сделать это, но сначала требуетсяМного времени, так как элемент в окрестности каждого элемента меняется, и использование (для, в то время как) циклов становится очень сложным, и, во-вторых, время выполнения станет очень большим.У меня вопрос, есть ли какая-нибудь библиотека или метод (что-то вроде numpy), чтобы облегчить мою работу?

1 Ответ

0 голосов
/ 01 октября 2018

что-то вроде этого может работать:

mat = [[True, False, False, True],
       [False, False, True, False],
       [True, True, False, True]]

max_i = len(mat)
max_j = len(mat[0])

def surrounding(i, j):

    ret = []

    for ii in range(max(0, i-1), min(i+2, max_i)):
        for jj in range(max(0, j-1), min(j+2, max_j)):
            if (ii, jj) == (i, j):
                continue
            ret.append(int(mat[ii][jj]))
    return ret

обратите внимание на функции min и max внутри range s, которые заботятся о границах вашей матрицы.

и поскольку python bool s являются подклассами int в любом случае, True и False можно просто привести к int.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...