Расширение значений в матрице - PullRequest
0 голосов
/ 25 марта 2020

У меня в настоящее время есть матрица со следующими значениями:

[[0,0,0,0,0],
 [0,0,1,0,0],
 [1,1,0,0,0],
 [0,0,0,1,0],
 [0,0,0,0,1]]

Я хотел бы расширить значения 1 выше и ниже на 1, что приведет к такой матрице:

[[0,0,1,0,0],
 [1,1,1,0,0],
 [1,1,1,1,0],
 [1,1,0,1,1],
 [0,0,0,1,1]]

1 Ответ

0 голосов
/ 25 марта 2020

Создайте пустую строку выше и ниже, а затем просто добавьте массив дважды: сдвиньте на одну строку вверх и сдвиньте на одну строку вниз.

import numpy as np

a = np.array([[0,0,0,0,0],
             [0,0,1,0,0],
             [1,1,0,0,0],
             [0,0,0,1,0],
             [0,0,0,0,1]])

space = np.zeros((1,a.shape[1]),dtype=int)
c = np.vstack((space,a,space))
c[:a.shape[0]] += a
c[-a.shape[0]:]+= a
c = (c[1:-1]!=0).astype(int)
print(c)

Out:

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