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

如何提取TH2D对象的bin标签并转换为NumPy格式?

TH2D提取bin标签并转换为NumPy数组的方法

结论

可以基于bin索引提取对应的nuisance参数标签,核心调用TH2D内置的fXaxis、fYaxis轴对象的方法即可实现。

具体实现方法

  • 首先明确ROOT的TH2索引规则:普通数据bin从1开始计数,索引0对应下溢出bin,索引总bin数+1对应上溢出bin,常规使用时仅需取1到总bin数范围内的索引即可。
  • 提取单bin标签的语法:
    • x轴第i个bin对应标签:th2d_obj.fXaxis.GetBinLabel(i)
    • y轴第j个bin对应标签:th2d_obj.fYaxis.GetBinLabel(j)
  • 完整转换为NumPy矩阵+标签列表的示例代码:
import numpy as np

# 假设你的TH2D对象名为corr_th2
nbins_x = corr_th2.GetNbinsX()
nbins_y = corr_th2.GetNbinsY()

# 提取x、y轴所有bin对应的nuisance参数标签
x_nuisance_labels = [corr_th2.fXaxis.GetBinLabel(i) for i in range(1, nbins_x + 1)]
y_nuisance_labels = [corr_th2.fYaxis.GetBinLabel(j) for j in range(1, nbins_y + 1)]

# 转换相关矩阵为NumPy数组
corr_np = np.zeros((nbins_x, nbins_y))
for i in range(1, nbins_x + 1):
    for j in range(1, nbins_y + 1):
        corr_np[i-1, j-1] = corr_th2.GetBinContent(i, j)

注意事项

如果TH2D创建时未显式设置bin标签,GetBinLabel会返回空字符串,此时可通过fXaxis.GetBinCenter(i)获取bin中心值做参数对应。通常高能物理似然拟合输出的nuisance参数相关矩阵都会预设参数名作为bin标签,上述方法可直接使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 19:27:07