다른 목록 크기와 유형의 중첩 목록이 있습니다. 이벤트의 예에 대한 결과중첩 목록을 numpy 배열로 변환하는 효율적인 방법
def read(f,tree,objects):
Event=[]
for o in objects:
#find different features of one class
temp=[i.GetName() for i in tree.GetListOfBranches() if i.GetName().startswith(o)]
tempList=[] #contains one class of objects
for t in temp:
#print t
tempList.append(t)
comp=np.asarray(getattr(tree,t))
tempList.append(comp)
Event.append(tempList)
return Event
def main():
path="path/to/file"
objects= ['TauJet', 'Jet', 'Electron', 'Muon', 'Photon', 'Tracks', 'ETmis', 'CaloTower']
f=ROOT.TFile(path)
tree=f.Get("RecoTree")
tree.GetEntry(100)
event=read(f,tree,objects)
[0] I는 NumPy와 배열로 변환하는 방법
['TauJet', array(1), 'TauJet_E', array([ 31.24074173]), 'TauJet_Px', array([-28.27997971]), 'TauJet_Py', array([-13.18042469]), 'TauJet_Pz', array([-1.08304048]), 'TauJet_Eta', array([-0.03470514]), 'TauJet_Phi', array([-2.70545626]), 'TauJet_PT', array([ 31.20065498]), 'TauJet_Charge', array([ 1.]), 'TauJet_NTracks', array([3]), 'TauJet_EHoverEE', array([ 1745.89221191]), 'TauJet_size', array(1)]
입니까?
참고 1 : np.asarray (이벤트, "개체")가 느립니다. 나는 더 나은 길을 찾고있다. 또한 고정 된 유형이없는 한 np.fromiter()는 적용 할 수 없습니다.
참고 2 : 내 이벤트의 길이를 알지 못합니다.
주 3 : 작업을 쉽게하면 이름을 타볼 수도 있습니다.
내가 pandas''에서 모양을 제공하도록 제안 ['DataFrames'] (http://pandas.pydata.org/pandas-docs/stable/dsintro.html). 다른 길이의 컬럼에 대한 지원이 있다는 것을 (어쩌면 올바르게) 기억하고 있습니다. 게다가 그들은 numpy 수치 연산을 지원합니다. –