0

我有以下 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))

如何读取偏移值以确定哪个是最低的,然后重新组织数组以从最小的偏移值开始到最大?

4

1 回答 1

0

任何“列”都可以按名称访问:

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

np.sort接受一个order参数 - 有关示例,请参见其文档

在不重新创建数组的情况下,我认为这应该可行:

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

inst1应该使用按“偏移”排序的“行”打印。

您也可以尝试argsort特定领域:

idx = np.argsort(inst['offset'])
inst[idx]
于 2015-10-07T19:59:58.033 回答