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

Uproot3是否支持向TTree写入包含数组的TBranches?

Uproot写入数组类型TBranches的支持情况说明

好问题!我来帮你理清Uproot在写入数组分支这件事上的情况:

关于Uproot 3的限制

确实,Uproot 3的官方文档明确说明仅支持写入每个条目含单个值的分支,没法直接处理数组类型的TBranches,这是当时版本的局限性。

Uproot 4及以上版本的支持情况

从Uproot 4开始,这个限制已经被完全移除了!现在Uproot不仅支持写入固定长度数组,还能处理锯齿数组(可变长度数组)、多维数组等复杂结构,GitHub上那些相关讨论其实就是推动这个功能开发的过程,最终这些需求都在后续版本中落地了。

相关文档位置

最新版Uproot的官方文档里有专门的章节讲解如何写入数组类型的分支:

  • 在「Writing TTrees」章节中,你能找到针对不同数组类型的示例代码,包括固定长度数组、锯齿数组的写入方法
  • 在「Data Types」章节中,会详细说明Python数据类型(比如numpy数组、列表的列表等)和ROOT数组类型的映射关系,帮你确定如何准备对应的数据

这里给你一个简单的写入锯齿数组的示例代码:

import uproot
import numpy as np

# 创建并写入一个含数组分支的TTree
with uproot.recreate("array_tree.root") as output_file:
    # 准备锯齿数组数据:每个条目是长度不同的numpy数组
    array_data = [np.array([1, 2, 3]), np.array([4, 5]), np.array([6])]
    # 将数据写入TTree,Uproot会自动识别并处理可变长度数组类型
    output_file["my_tree"] = {"my_array_branch": array_data}

内容的提问来源于stack exchange,提问作者Lech Wiktor Piotrowski

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:51:21