Скажите, у меня есть размер k
.Я ищу функцию, которая принимает k
в качестве входных данных и возвращает следующую матрицу блоков.
Пусть I
будет k-мерной единичной матрицей, а 0
будет k-мерной квадратной матрицей нулей
То есть:
def function(k):
...
return matrix
function(2) -> np.array([I, 0])
function(3) -> np.array([[I,0,0]
[0,I,0]])
function(4) -> np.array([[I,0,0,0]
[0,I,0,0],
[0,0,I,0]])
function(5) -> np.array([[I,0,0,0,0]
[0,I,0,0,0],
[0,0,I,0,0],
[0,0,0,I,0]])
То естьна выходе получается (k-1, k) матрица, где единичные матрицы находятся на диагональных элементах и нулевые матрицы в других местах.
Что я пробовал:
Я знаю, как создать любого человекая просто не могу придумать, как поместить его в функцию, чтобы она взяла измерение k
и выполнила нужную мне матрицу.
например,
np.block([[np.eye(3),np.zeros((3, 3)),np.zeros((3, 3))],
[np.zeros((3, 3)),np.eye(3),np.zeros((3, 3))]])
Будет желаемым выводом для k = 3
scipy.linalg.block_diag похоже, что он может быть на правильном пути ...