【发布时间】:2020-08-25 07:56:00
【问题描述】:
如何使用 Numpy 生成动态大小的下对角矩阵?
比如如果矩阵的大小n是4我想得到这样一个矩阵:
| 0 0 0 0 |
| 1 0 0 0 |
| 0 1 0 0 |
| 0 0 1 0 |
【问题讨论】:
如何使用 Numpy 生成动态大小的下对角矩阵?
比如如果矩阵的大小n是4我想得到这样一个矩阵:
| 0 0 0 0 |
| 1 0 0 0 |
| 0 1 0 0 |
| 0 0 1 0 |
【问题讨论】:
你可以创建它,首先创建一个零矩阵,然后填充一个:
import numpy as np
# create matrix with zeros
n=4
mat = np.zeros((n,n))
# create indexes for where the 1s belong
rows = np.arange(1,n)
cols = np.arange(n-1)
# fill in the 1s
mat[rows, cols] = 1
输出:
[[0. 0. 0. 0.]
[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]]
【讨论】:
我找到了使用np.eye的最短方法:
import numpy as np
n = 4
np.eye(n, k=-1, dtype=int)
输出是:
array([[0, 0, 0, 0],
[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 1, 0]])
【讨论】: