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

如何创建每行元素按序列递增的上三角矩阵?

问题分析与解决

原代码无法得到期望结果的核心问题:

  • np.triu(np.ones((5,5)))生成的是上三角元素全为1、下三角全为0的矩阵,因此arr > 1的判断结果全为False,后续的赋值语句根本不会执行,最终输出的还是初始的上三角全1矩阵。

正确实现方式

方法1:利用索引广播(numpy向量化操作,效率更高)

import numpy as np
n = 5
# 生成行、列索引矩阵
rows, cols = np.indices((n, n))
# 上三角区域赋值为 列索引-行索引+1,下三角保持0
result = np.where(rows <= cols, cols - rows + 1, 0)
print(result)

方法2:循环填充(逻辑直观)

import numpy as np
n = 5
result = np.zeros((n, n))
for i in range(n):
    # 第i行从第i列开始,填充1到n-i的序列
    result[i, i:] = np.arange(1, n - i + 1)
print(result)

两种方法都能输出期望的结果:

[[1 2 3 4 5]
 [0 1 2 3 4]
 [0 0 1 2 3]
 [0 0 0 1 2]
 [0 0 0 0 1]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 05:20:26