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

如何在Python中阅读带有Outlot的Tmatrix?,python,uproot,Python,Uproot,我有一个*.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 0x

我有一个*.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>
>data=up.open('file.root'))
>>>data.keys()
['ring_sums;1','tpc_多重性;1','impact_参数;1']
>>>数据[“环和”]
如何读取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'
>数据['ring_sums'].值()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
AttributeError:“Model\u tMatrix\u 3c\u double\u 3e\u v4”对象没有属性“值”

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

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

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

data['ring_sums'].成员(“fements”)
因为这似乎是相关的。这些可能会作为一个未定型的NumPy数组(或者,它是NumPy数组的一个子类)出现。您可能需要
将其重塑为正确的形式,并且可能会在其他成员(可能属于超类的成员)中找到正确的形状

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