You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将任意1维Numpy数组重塑为指定结构的下三角矩阵

实现方案

你需要构造的是下三角托普利茨矩阵,有两种常用实现方式:

方法1:纯NumPy实现(无额外依赖)

核心思路是利用索引矩阵判断元素位置,直接按规则赋值:

import numpy as np

# 输入一维数组
a = np.array([3, 2, 9, 12])
n = a.shape[0]
# 生成行列索引矩阵
row_idx, col_idx = np.indices((n, n))
# 按规则生成矩阵:行索引>=列索引时取a[行-列],否则取0
m = np.where(row_idx >= col_idx, a[row_idx - col_idx], 0)

运行后输出的m和你要求的结构完全一致。

方法2:借助scipy的托普利茨矩阵接口(代码更简洁)

如果你的环境可以安装scipy,直接调用内置的托普利茨矩阵生成方法即可:

import numpy as np
from scipy.linalg import toeplitz

a = np.array([3, 2, 9, 12])
n = a.shape[0]
# 托普利茨矩阵第一列设为a,第一行设为第一个元素后接n-1个0
m = toeplitz(c=a, r=np.pad(a[:1], (0, n-1), constant_values=0))

两种方法都是向量化操作,性能远高于手动循环遍历赋值,适合处理任意长度的输入数组。


内容的提问来源于stack exchange,提问作者MRR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:54:03