python - Numpy:创建 block 矩阵的函数

标签 python python-3.x numpy matrix

假设我有一个维度 k。我正在寻找的是一个将 k 作为输入并返回以下 block 矩阵的函数。

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看起来它可能在正确的轨道上......

最佳答案

IMO,np.eye 已经拥有您需要的一切,因为您可以分别定义行数和列数。
所以你的函数应该看起来像

def fct(k):
    return np.eye(k**2-k, k**2)

关于python - Numpy:创建 block 矩阵的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50822986/

相关文章:

Python 注释不同输入情况的返回类型

python - pandas:基于多列合并两个文件

python - 无法在Python 3.9上使用pip安装Open CV

python - 简洁的Python方法来改变一个值,如果它不是Falsey

python - urllib.Request 删除 Content-Type header

python - 解析二维数组中的字符串推送值

python - 使用 Python 将列中的值从 float 舍入到整数

python - flymake的临时文件可以在系统的临时目录下创建吗?

Python。 Pandas 。大数据。凌乱的 TSV 文件。如何争论数据?

Python Datetime 将所有值合并为 int