如何在Python中阅读带有Outlot的Tmatrix?

2024-09-27 19:09:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个*.root文件,我正试图用uplot(uplot4)读入Python。看起来是这样的:

>>> data = up.open('file.root')
>>> data.keys()
['ring_sums;1', 'tpc_multiplicity;1', 'impact_parameter;1']
>>> data['ring_sums']
<TMatrixT<double> (version 4) at 0x0205b219d748>

如何读取tMatrix类型?使用.keys()、.values()和.items()不起作用

>>> data['ring_sums'].values()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'Model_TMatrixT_3c_double_3e__v4' object has no attribute 'values'

将数据读入笨拙的数组、pandas dataframe或numpy数组的正确方法是什么


Tags: 文件dataroot数组openkeysvaluesdouble
1条回答
网友
1楼 · 发布于 2024-09-27 19:09:28

TMatrixT是一个没有任何专门代码的类,但是它可以被读取,因为它的“拖缆”(反序列化指令)包含在根文件中。因此,它是以一种相当通用的方式呈现的

您可以在all_members(dict)中找到对象的所有成员数据,或者使用member("memberName")方法仅提取一个。所以,举个例子,试试看

data['ring_sums'].member("fElements")

因为TMatrixT::fElements似乎是相关的。这些可能会作为一个未定型的NumPy数组(或者uproot.models.TArray,它是NumPy数组的一个子类)出现。您可能需要reshape将其转换为正确的形式,并且可能在其他成员(可能属于超类的成员)中找到正确的形状

如果您找到了一种使用TMatrixT对象的好方法,并且希望它成为自动化的,可能是在values方法中,将其添加为pull request或将其描述为feature request以进行根除(一种新的“行为”)

相关问题 更多 >

    热门问题