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

如何按三角形式提取二维数组的下三角部分(含对角线)

如何将Python二维数组转换为下三角形式(含对角线)

原始输入数组:

a = [[0., 15., 19., 18., 17.],
     [15., 0., 14., 12., 23.],
     [19., 14.,  0., 14., 21.],
     [18., 12., 14., 0., 14.],
     [17., 23., 21., 14.,  0.]]

期望输出的下三角形式数组(包含对角线):

[[0.],
 [15., 0.],
 [19., 14., 0.],
 [18., 12., 14., 0.],
 [17., 23., 21., 14., 0.]]

实现方案

方案1:列表推导式(简洁高效)

利用数组的索引特性,对每一行截取前i+1个元素(i为行的索引,从0开始):

result = [row[:i+1] for i, row in enumerate(a)]

执行后输出结果与目标完全匹配:

print(result)
# 输出:
# [[0.], [15.0, 0.], [19.0, 14.0, 0.], [18.0, 12.0, 14.0, 0.], [17.0, 23.0, 21.0, 14.0, 0.]]

方案2:手动循环构建(直观易懂)

如果需要更清晰的过程展示,可以通过循环逐行处理:

result = []
for idx in range(len(a)):
    sub_row = a[idx][:idx+1]
    result.append(sub_row)

这个方案和列表推导式的效果完全一致,只是写法更偏向过程式。

特殊情况处理(若对角线非0)

如果原始数组的对角线元素不是0,需要强制替换为0的话,可以修改代码如下:

result = [row[:i] + [0.] for i, row in enumerate(a)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 00:45:35