Сортировка Numpy Array двух разных типов - PullRequest
0 голосов
/ 08 мая 2018

В основном я пишу код на C ++ и пытаюсь понять, как отсортировать структуру данных, которую мне удалось создать. Пожалуйста, найдите следующий код:

dtype = [('dist',float) , ('type',int)]
arr = np.zeros((200,2), dtype = dtype)
i = 0
for current_image in all_images:
    arr[i][0] = distance(current_image, new_image)
    if current_image[576] == 1:
        arr[i][1] = 1
    else:
        arr[i][1] = 0
    i = i + 1

Я хотел создать массив размером 200 на 2 с плавающей точкой в ​​первом столбце и целые числа во втором. Я не совсем уверен, как отсортировать все 200 элементов на основе значения dist от наименьшего к наибольшему. Также моя структура данных выглядит странно, что-то вроде этого:

[[( 9.47168802,  9) ( 0.        ,  0)]
[( 6.95162905,  6) ( 1.        ,  1)]
[( 8.72382552,  8) ( 0.        ,  0)]
[( 8.9333134 ,  8) ( 1.        ,  1)]]

1 Ответ

0 голосов
/ 08 мая 2018

Вы можете отсортировать это просто:

arr.sort(axis=0)

Вы также можете явно указать ключ сортировки, хотя это необязательно в вашем случае, так как в любом случае это первое поле:

arr.sort(axis=0, order='dist')

Или сделать копию вместо сортировки на месте:

np.sort(arr, axis=1, order='dist')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...