Создать двухрядную диагональную матрицу в numpy

Я пытаюсь сделать специальную диагональную матрицу, которая выглядит так:

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

Это немного отличается от вопроса здесь: Создать специальную диагональную матрицу в Numpy

Я попытался настроить решение, но не смог его получить. Цените любые советы о том, как добиться этого эффективно.


person yl_low    schedule 31.01.2019    source источник
comment
И так далее . . . :)   -  person Warren Weckesser    schedule 31.01.2019
comment
отличный!! пожалуйста, добавьте это как ответ, и я приму его. Спасибо!   -  person yl_low    schedule 31.01.2019


Ответы (1)


Не так элегантно, как в комментариях, но:

a=4 # number of rows
b=a*2 #number of columns
np.array((([1]*2+[0]*b)*a)[:-b]).reshape(a,b)
array([[1, 1, 0, 0, 0, 0, 0, 0],
       [0, 0, 1, 1, 0, 0, 0, 0],
       [0, 0, 0, 0, 1, 1, 0, 0],
       [0, 0, 0, 0, 0, 0, 1, 1]])

работает для любого a.

person Artem Trunov    schedule 31.01.2019