5×5 размерная матрица из матрицы m×n

У меня есть размерная матрица m×n, мне нужно получить размерную матрицу 5×5 по индексам i, j, Результат должен быть таким:

res = [[arr[i-2][j-2], arr[i-2][j-1]], arr[i-2][j  ], arr[i-2][j+1], arr[i-2][j+2]]
       [arr[i-1][j-2], arr[i-1][j-1]], arr[i-1][j  ], arr[i-1][j+1], arr[i-1][j+2]],
       [arr[i  ][j-2], arr[i  ][j-1]], arr[i  ][j  ], arr[i  ][j+1], arr[i  ][j+2]],
       [arr[i+1][j-2], arr[i+1][j-1]], arr[i+1][j  ], arr[i+1][j+1], arr[i+1][j+2]],
       [arr[i+2][j-2], arr[i+2][j-1]], arr[i+2][j  ], arr[i+2][j+1], arr[i+2][j+2]]]

Проблема в индексах массива. i, j случайные числа, так что это может быть 0, 0 или же m-1, n-1, В этом случае проблемные значения, такие как [arr[i-2][j-2] или же [arr[i+2][j+2] должен быть заменен на 'x', Есть ли сухой способ получить результат?

1 ответ

Решение

Я думаю, что-то подобное сделало бы работу:

def give_matrix(arr,i,j):
    res = []
    for ii in range(i-2,i+3): 
        inner_res = []
        for jj in range(j-2,j+3):
            if (ii-2<0 or ii+3>n or jj-2<0 or jj+3>n): # manage borders
                inner_res.append('x')
            else:
                inner_res.append(arr[ii][jj])
        res.append(inner_res)
    return res

LiveCode

Другие вопросы по тегам