根据特定列对numpy数组(包含字符串、字典和数字)进行排序

2024-05-15 22:34:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的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]]

Tags: 字符串numpymostage字典数字数组upper
1条回答
网友
1楼 · 发布于 2024-05-15 22:34:54

这可能是使用最后一列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)

另一种选择是使用^{},其中-1表示最后一个条目/索引

from operator import itemgetter

X = sorted(X, key=itemgetter(-1))

相关问题 更多 >