2015-09-09 7 views
0

У меня есть Xml моделирование выход, со многими vehicle строки:питон для вывода контура как массив

<routes> 
     <vehicle id="8643" type="car" depart="0.03" departLane="free" departSpeed="max" fromTaz="63" toTaz="5"> 
     <vehicle id="8928" type="car" depart="0.34" departLane="free" departSpeed="max" fromTaz="663" toTaz="1147"> 
    </routes> 

В настоящее время у меня есть, ниже которого печатает необходимые атрибуты.

import xml.etree.cElementTree as ET 
e = ET.parse('trip_049.rou.xml') 
root = e.getroot() 

for vehicle in root.findall('vehicle'): 
    id = vehicle.get('id') 
    origin = vehicle.get('fromTaz') 
    destination = vehicle.get('toTaz') 
    print id,origin,destination 

Какие выходы:

8643 63 5 
8928 663 1147 

Но мне нужен выходной контур должен храниться в Numpy массиве или эквивалент, как:

id origin destination 
8643 63  5 
8928 663 1147 

Спасибо adavance

+0

Вы хотите, чтобы они представляли собой массив с 2-мя цифрами? И вы хотите, чтобы элементы имели строку типа? –

+0

есть 2-d; для элементов в типе типа примера, но у меня могут быть некоторые строковые элементы для добавления позже. Я удалю str из примера – BenP

ответ

2

Вы может просто создать двумерный список, а затем в конце преобразовать его в массив numpy. Пример -

import xml.etree.cElementTree as ET 
import numpy as np 
e = ET.parse('trip_049.rou.xml') 
root = e.getroot() 

tdlist = [] 
for vehicle in root.findall('vehicle'): 
    id = vehicle.get('id') 
    origin = vehicle.get('fromTaz') 
    destination = vehicle.get('toTaz') 
    tdlist.append([id,origin,destination]) 

arraylst = np.array(tdlist) 

Элементы tdlist и, следовательно, в arraylst будет иметь тип str. Если вы хотите, чтобы они были целыми числами, вы должны преобразовать их в int as -

id = int(vehicle.get('id')) 
origin = int(vehicle.get('fromTaz')) 
destination = int(vehicle.get('toTaz'))