如何在Python中基于系数向量生成对应下三角矩阵
Python实现系数向量生成下三角矩阵
先明确矩阵生成规则:假设系数向量c长度为m,要生成n×n下三角矩阵A,元素取值规则为:
对任意元素
A[i][j],当i≥j且i-j < m时,A[i][j] = c[i-j],其余位置为0。
你需要的通用实现有两种常用方案:
- 嵌套循环实现:逻辑直观,适合小规模矩阵场景,符合你提到的嵌套循环思路:
def generate_lower_triangular(c, n): # 初始化全0矩阵 A = [[0]*n for _ in range(n)] m = len(c) for i in range(n): for j in range(i+1): diff = i - j if diff < m: A[i][j] = c[diff] return A # 测试用例 c = [0, 1, 0] # 生成4阶下三角矩阵 print(generate_lower_triangular(c, 4))
运行输出为:
[[0, 0, 0, 0], [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0]]
- NumPy向量化实现:无显式循环,性能更高,适合大规模矩阵计算场景:
import numpy as np def generate_lower_triangular_np(c, n): m = len(c) row_idx = np.arange(n) col_idx = np.arange(n) diff = row_idx[:, None] - col_idx return np.where((diff >= 0) & (diff < m), np.array(c)[diff], 0) # 测试用例 c = [0,1,0] print(generate_lower_triangular_np(c, 4))
运行输出和循环实现完全一致。
你可以根据自己的使用场景选择对应方案,若需要矩阵阶数和系数向量长度相等,直接将参数n设置为len(c)即可。
内容的提问来源于stack exchange,提问作者restingquartH
相关产品推荐
相关产品推荐

