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

如何构造n次对角重复的10阶下三角数组及扩展需求

问题解决方案

需求1:构造对角重复的下三角大数组

问题描述

构造一个10阶下三角数组,将其在规模为10n×10n的大数组主对角线上重复n次,其余位置补0。以3阶n=2为例,最终得到6×6数组,两个3阶下三角矩阵分布在主对角线,其余元素为0。

解决方案

使用scipy.linalg.block_diag可以快速构造块对角矩阵,避免pd.concat导致的全行列重复问题。示例代码如下:

import numpy as np
from scipy.linalg import block_diag

# 生成10阶下三角矩阵
k = 10
lower_tri = np.tril(np.ones((k, k)))

# 重复n次构造块对角大数组
n = 2  # 可替换为任意正整数
big_matrix = block_diag(*[lower_tri] * n)

print(big_matrix.shape)  # 输出(20,20),符合10*2的规模

如果不想依赖scipy,也可以用numpy的block方法手动构造:

big_matrix = np.block([[lower_tri if i == j else np.zeros((k, k)) for j in range(n)] for i in range(n)])

需求扩展:生成所有远期结构排列数组

问题描述

生成所有指定的远期结构排列,共20列(每列代表0.5年),每个排列对应一个数组,对应时间段的列填1,其余为0。例如1y5y对应第3列(1.5年)到第12列(6年)填1,其余为0。排列范围包含0x0.5、0x1…5x3.5、5x4…9x0.5、9x1。

解决方案

首先明确远期结构x y的定义:x为延迟年数,y为期限年数,覆盖时间段为x+0.5年到x+y年(对应1-based列号为(x+0.5)/0.5到(x+y)/0.5)。以下是生成所有排列的代码:

import numpy as np

num_cols = 20  # 1-based列1~20,对应0.5~10年
forward_combinations = []

# 生成所有(x,y)组合
# x从0到5,y取0.5、1、…、4(步长0.5)
for x in range(0, 6):
    for y in [0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4]:
        forward_combinations.append((x, y))
# x从6到9,y取0.5、1
for x in range(6, 10):
    for y in [0.5, 1]:
        forward_combinations.append((x, y))

# 生成每个组合对应的数组
forward_arrays = {}
for x, y in forward_combinations:
    start_year = x + 0.5
    end_year = x + y
    # 转换为1-based列号
    start_col = int(start_year / 0.5)
    end_col = int(end_year / 0.5)
    # 转换为0-based索引并确保不越界
    start_idx = max(0, start_col - 1)
    end_idx = min(num_cols - 1, end_col - 1)
    # 创建数组并填充1
    arr = np.zeros(num_cols, dtype=int)
    arr[start_idx:end_idx + 1] = 1
    # 命名组合(如0x0.5→0y0.5y,5x4→5y4y)
    y_str = str(y) if y != int(y) else str(int(y))
    key = f"{x}y{y_str}y"
    forward_arrays[key] = arr

# 示例:输出1y5y对应的数组
print("1y5y对应的数组:")
print(forward_arrays["1y5y"])

运行后,forward_arrays字典中存储了所有指定远期结构对应的数组,可直接调用使用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 11:10:35