2015-10-07 2 views
0

У меня есть следующий массив записей numpy.В массиве записей numpy, как вы можете упорядочить элементы на основе значения в записи?

name  module   offset 

filter-2 filter_module 0x000020 

filter-3 filter_module 0x000042 

filter-1 filter_module 0x000014 

Я хочу, чтобы было возможно определить, какое значение смещения является наименьшим и порядок в порядке возрастания. Желательным результатом будет.

name  module   offset 

filter-1 filter_module 0x000014 

filter-2 filter_module 0x000020 

filter-3 filter_module 0x000042 

Вот код, где сгенерирована Numpy массив

instance_dtype={ 
    'names' : ('name','module','offset'), 
    'formats' : ('U20','U20','U20')} 

instance= np.zeros(5,instance_dtype) 
i=0 

for node in xml_file.iter(): 
    if node.tag=="instance": 
     attribute=node.attrib.get('name') 

inst= (node.attrib.get('name'),node.attrib.get('module'),node.attrib.get('offset')) 
     instance[i]=inst 
     i=i+1 
print('%10s,%15s,%5s'%tuple(rec)) 

Как можно прочитать значения смещения выяснить, что является самым низким, а затем реорганизовать массив, чтобы начать с наименьшего значения смещения к самый большой?

ответ

0

Любой из «колонн» можно получить по имени:

inst['name'] 
inst['module'] 

np.sort принимает order параметр - см документацию для примера

Без воссоздавать свой массив, я думаю, что это должно работать:

inst1 = np.sort(inst, order='offset') 

inst1 должен печатать 'строк', отсортированные по 'смещение'.

Вы также можете попробовать argsort на конкретном поле:

idx = np.argsort(inst['offset']) 
inst[idx] 
Смежные вопросы