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

Python中按指定顺序遍历方阵上三角矩阵的实现方法求助

实现方案

你要实现的逐列遍历上三角矩阵、每列遍历时新增一行的逻辑,仅需将内层循环的范围设置为range(j+1)即可,该范围会让行索引从0开始,到当前列索引j结束,刚好匹配每列比上一列多一行的要求。

完整可运行代码

import numpy as np

X = 10
Y = X
U = np.zeros((Y, X))

# 用count变量标记遍历顺序,方便验证
traverse_order = 1
for j in range(X):
    # 内层循环行号从0到当前列号j
    for z in range(j + 1):
        U[z][j] = traverse_order
        traverse_order += 1

# 输出前5行5列验证遍历顺序
print(U[:5, :5])

运行后输出的前5行5列结果如下,可以清晰看到遍历顺序符合要求:

[[ 1.  2.  4.  7. 11.]
 [ 0.  3.  5.  8. 12.]
 [ 0.  0.  6.  9. 13.]
 [ 0.  0.  0. 10. 14.]
 [ 0.  0.  0.  0. 15.]]

更高效的无循环实现

如果矩阵尺寸较大,推荐直接用numpy内置的triu_indices方法直接获取上三角矩阵的索引,无需手动写循环:

import numpy as np

X = 10
Y = X
U = np.zeros((Y, X))

# 直接获取上三角(含对角线)的行、列索引,顺序和逐列遍历完全一致
row_idx, col_idx = np.triu_indices(Y, k=0)
U[row_idx, col_idx] = np.arange(1, len(row_idx) + 1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:15:01