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

如何确定np.diagonal()的最大/最小偏移量以获取矩阵全部对角线?

获取Numpy矩阵的所有对角线(含偏移对角线)

确定偏移量范围

对于n×n的方阵,np.diagonal()的有效偏移量范围是从-(n-1)到n-1:

  • 偏移量为0:主对角线(长度为n)
  • 偏移量为正:主对角线上方的对角线,从1到n-1(长度依次递减1,最小为1)
  • 偏移量为负:主对角线下方的对角线,从-1到-(n-1)(长度依次递减1,最小为1)

代码实现

直接遍历所有有效偏移量,提取每个对角线并转换为列表格式:

import numpy as np

# 生成示例20×20矩阵(可替换为你的目标矩阵)
mat = np.random.randint(0, 10, (20, 20))
n = mat.shape[0]

# 遍历所有偏移量,提取对角线并转为列表
all_diagonals = [list(mat.diagonal(offset=off)) for off in range(-(n-1), n)]

执行后all_diagonals就是你需要的格式:[[7],[0,1],[8,5,6],...,[3,3],[4]]

补充说明

np.diagonal()返回的是对应偏移量的一维数组,切片语法只能对该数组本身做元素截取,无法获取不同偏移的对角线。通过遍历全范围偏移量,就能自动适配任意大小的方阵,无需手动计数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 18:37:11