【发布时间】:2018-06-12 17:48:58
【问题描述】:
假设我有一个维度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 似乎在正确的轨道上......
【问题讨论】:
-
np.identity(k*k)[:-k]? -
I 不是一个,它们是 k 维单位矩阵
-
k是数组的形状还是它的维数??? -
恒等矩阵的形状为 (k,k)
-
是的,我明白这一点,但它们排列成一条长对角线。
标签: python python-3.x numpy matrix