Сортировать массив Numpy (имеющий строки, словари и числа) относительно определенного столбца - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть следующий массив numpy (со строками, словарями и числами), и я хочу отсортировать этот массив по последнему столбцу (число)

X=[['few' {'age': 'young'} {'salary': 'low'} 0.8]
['few' {'salary': 'low'} {'age': 'young'} 0.3]
['few' {'age': 'young'} {'salary': 'medium'} 0]
...
['most' {'salary': 'medium'} {'education': 'upper'} 0.125]
['most' {'education': 'upper'} {'salary': 'high'} 0]
['most' {'salary': 'high'} {'education': 'upper'} 1]]

1 Ответ

0 голосов
/ 10 февраля 2019

Это может быть один из способов использования последнего столбца X[-1] в качестве сортировки key

import numpy as np

X=np.array([['few', {'age': 'young'}, {'salary': 'low'}, 0.8],
['few', {'salary': 'low'}, {'age': 'young'}, 0.3],
['few', {'age': 'young'}, {'salary': 'medium'}, 0],
['most', {'salary': 'high'}, {'education': 'upper'}, 1]])

X = np.array(sorted(X, key=lambda X: X[-1]) )
# array([['few', {'age': 'young'}, {'salary': 'medium'}, 0],
#        ['few', {'salary': 'low'}, {'age': 'young'}, 0.3],
#        ['few', {'age': 'young'}, {'salary': 'low'}, 0.8],
#        ['most', {'salary': 'high'}, {'education': 'upper'}, 1]],
#       dtype=object)

Другим вариантом может быть использование itemgetter, где -1 означаетпоследняя запись / индекс

from operator import itemgetter

X = sorted(X, key=itemgetter(-1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...