numpy中的超对角非正方形矩阵?

时间:2019-04-04 09:43:28

标签: python numpy matrix

使用numpy,我想创建一个几乎只有正方形的超对角矩阵。在正方形部分的右边或左边有多余的零。下面的代码段为我提供了理想的结果,但是阅读起来有些棘手,矩阵类型对我来说似乎很常见,应该有一种惯用的方式来构造它。

用numpy构造如下“填充眼睛”的最简单方法是什么?

import numpy as np
size = 5
pad_width = 3
left_padded_eye = np.block([np.zeros((size,pad_width)),np.eye(size)])
right_padded_eye = np.block([np.eye(size),np.zeros((size,pad_width))])

1 个答案:

答案 0 :(得分:1)

np.eye可以直接做到

>>> np.eye(size, size+pad_width, pad_width)
array([[0., 0., 0., 1., 0., 0., 0., 0.],
       [0., 0., 0., 0., 1., 0., 0., 0.],
       [0., 0., 0., 0., 0., 1., 0., 0.],
       [0., 0., 0., 0., 0., 0., 1., 0.],
       [0., 0., 0., 0., 0., 0., 0., 1.]])
>>> np.eye(size, size+pad_width)
array([[1., 0., 0., 0., 0., 0., 0., 0.],
       [0., 1., 0., 0., 0., 0., 0., 0.],
       [0., 0., 1., 0., 0., 0., 0., 0.],
       [0., 0., 0., 1., 0., 0., 0., 0.],
       [0., 0., 0., 0., 1., 0., 0., 0.]])