我有一个结构化的numpy
数组,其中一个字段有子字段:
import numpy, string, random
dtype = [('name', 'a10'), ('id', 'i4'),
('size', [('length', 'f8'), ('width', 'f8')])]
a = numpy.zeros(10, dtype = dtype)
for idx in range(len(a)):
a[idx] = (''.join(random.sample(string.ascii_lowercase, 10)), idx,
numpy.random.uniform(0, 1, size=[1, 2]))
我可以轻松地按任何字段对其进行排序,例如:
a.sort(order = ['name'])
a.sort(order = ['size'])
当我尝试按结构化字段(在此示例中为“size”)对其进行排序时,它实际上是按第一个子字段(在此示例中为“length”)进行排序。但是,我希望我的元素按'高度'排序。我试过这样的东西,但它不起作用:
a.sort(order = ['size[\'height\']']))
ValueError: unknown field name: size['height']
a.sort(order = ['size', 'height'])
ValueError: unknown field name: height
因此,我想知道,如果有办法完成任务吗?
答案 0 :(得分:2)
我相信这就是你想要的:
a[a["size"]["width"].argsort()]