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

如何计算pandas矩阵中各条对角线上元素的中位数?

实现代码

你可以通过翻转矩阵后提取平行对角线的方式快速实现需求,代码如下:

import numpy as np
import pandas as pd

# 你的原始矩阵
df_matrix = pd.DataFrame(np.random.random((10, 10)))

# 转换为numpy数组后左右翻转,将反对角线方向转为普通主对角线方向
flipped_mat = np.fliplr(df_matrix.values)

# 生成结果向量
median_vec = []
for offset in range(10):
    # 提取对应偏移量的对角线元素
    diag_items = np.diag(flipped_mat, k=offset)
    # 计算中位数,单元素场景下中位数就是元素本身,无需额外判断
    median_vec.append(np.median(diag_items))

# 可选:转为numpy数组格式
median_vec = np.array(median_vec)

原理解释

你需要的10条对角线是平行于矩阵反对角线(右上到左下走向)的序列,元素个数从10逐个递减到1:

  • 先对原始矩阵做左右翻转,原本的反对角线方向就会变成和普通主对角线(左上到右下)一致的方向
  • 用np.diag指定偏移量k从0到9,即可依次提取长度为10到1的对应对角线
  • np.median对长度为1的数组会直接返回该元素本身,天然符合你最后一个元素无需计算中位数的要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:39:03