【发布时间】:2021-02-22 09:52:18
【问题描述】:
我想在 python 中(使用numpy)创建一个上三角矩阵,格式如下:
[[ 1, c, c^2],
[ 0, 1, c ],
[ 0, 0, 1 ]])
其中c 是一个有理数,矩阵的秩可能不同(2、3、4,...)。除了创建行并堆叠它们之外,还有什么聪明的方法吗?
【问题讨论】:
标签: python numpy matrix linear-algebra
我想在 python 中(使用numpy)创建一个上三角矩阵,格式如下:
[[ 1, c, c^2],
[ 0, 1, c ],
[ 0, 0, 1 ]])
其中c 是一个有理数,矩阵的秩可能不同(2、3、4,...)。除了创建行并堆叠它们之外,还有什么聪明的方法吗?
【问题讨论】:
标签: python numpy matrix linear-algebra
r = 3
c = 3
i,j = np.indices((r,r))
np.triu(float(c)**(j-i))
结果:
array([[1., 3., 9.],
[0., 1., 3.],
[0., 0., 1.]])
【讨论】:
可能有更直接的解决方案,但这是我想出的:
import numpy as np
c=5
m=np.triu(c**np.triu(np.ones((3,3)), 1).cumsum(axis =1))
print(m)
输出:
[[ 1. 5. 25.]
[ 0. 1. 5.]
[ 0. 0. 1.]]
【讨论】: