У меня есть структурированный numpy
массив, в котором один из поля имеет подполя:Сортировка 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'])
Когда я пытаюсь сортировать его по структурированному полю («размер» в этом примере), он эффективно сортируется по первому подполе («длина» в этом примере). Тем не менее, я хотел бы, чтобы мои элементы отсортировались по «высоте». Я пытался что-то вроде этого, но он не работает:
a.sort(order = ['size[\'height\']']))
ValueError: unknown field name: size['height']
a.sort(order = ['size', 'height'])
ValueError: unknown field name: height
Поэтому мне интересно, если есть способ, чтобы выполнить задачу?