как сделать матрицу (9 * 9) коротким путем - PullRequest
0 голосов
/ 07 октября 2019

Привет, я хочу знать, как сделать эту Матрицу (9 * 9) с более коротким кодом, чем этот

a= np.ones((9,9),dtype=int)
a[1:8,1:8:]=0
a[2:7,2:7:]=1
a[3:6,3:6:]=0
a[4:5,4:5:]=1

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

Ответы [ 2 ]

1 голос
/ 07 октября 2019

Я не рекомендую этот подход, но для смеха вот способ сделать это, используя концепцию максимальной нормы

n = 9
x, y = np.meshgrid(range(-n//2+1, n//2+1), range(-n//2+1, n//2+1))
a = 1 - (np.max((np.abs(x), np.abs(y)), 0) % 2)

Действительно действительно работает только для нечетных значенийn

1 голос
/ 07 октября 2019

Вы можете использовать цикл:

n = 9
a = np.ones((n,n),dtype=int)
for i in range(0, n//2):
    a[i+1:n-1-i,i+1:n-1-i] = i % 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...