Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python对数组进行排序_Python_Sorting - Fatal编程技术网

Python对数组进行排序

Python对数组进行排序,python,sorting,Python,Sorting,我试图对包含变量类的numpy数组进行排序 groups =['(0, 10]', '(10, 20]', '(100, 110]', '(110, 120]', '(120, 130]', '(130, 140]', '(140, 150]', '(150, 160]', '(160, 170]', '(170, 180]', '(180, 190]', '(190, 200]', '(20, 30]', '(200, 210]', '(210, 220]

我试图对包含变量类的numpy数组进行排序

groups =['(0, 10]', '(10, 20]', '(100, 110]', '(110, 120]', '(120, 130]',
         '(130, 140]', '(140, 150]', '(150, 160]', '(160, 170]', '(170, 180]', 
         '(180, 190]', '(190, 200]', '(20, 30]', '(200, 210]', '(210, 220]', 
         '(230, 240]', '(30, 40]', '(40, 50]', '(50, 60]', '(60, 70]', 
         '(70, 80]', '(80, 90]', '(90, 100]']
我想要这个:

groups = ['(0, 10]', '(10, 20]','(30, 40]','(40, 50]', '(50, 60]', ...]
我试过这个:

sort(groups)

但是什么都没有……。

您的元素有两个问题

  • 它们是字符串,不是数字的元组
  • 关闭]与打开不匹配(
所以,你首先要转换它们

groups = [eval(group[:-1] + ')') for group in groups]
print(sorted(groups))

您必须将字符串解释为数字元组,否则它们将按字典顺序排序(这将给出错误的结果!):

返回:

['(0, 10]', '(10, 20]', '(20, 30]', '(30, 40]', '(40, 50]', '(50, 60]', '(60, 70]',
 '(70, 80]', '(80, 90]', '(90, 100]', '(100, 110]', '(110, 120]', '(120, 130]',
 '(130, 140]', '(140, 150]', '(150, 160]', '(160, 170]', '(170, 180]', '(180, 190]',
 '(190, 200]', '(200, 210]', '(210, 220]', '(230, 240]']

排序函数是
sorted
。我们将使用一个键函数提取数字并将其转换为整数元组

sorted(groups, key=lambda x: tuple(map(int, x[1:-1].split(','))))
输出:

['(0, 10]', '(10, 20]', '(20, 30]', '(30, 40]', '(40, 50]', '(50, 60]',
 '(60, 70]', '(70, 80]', '(80, 90]', '(90, 100]', '(100, 110]', '(110, 120]',
'(120, 130]', '(130, 140]', '(140, 150]', '(150, 160]', '(160, 170]', 
'(170, 180]', '(180, 190]', '(190, 200]', '(200, 210]', '(210, 220]', '(230, 240]']

NameError:名称“sort”未定义此数组是使用熊猫来生成的吗?cut?是的,我使用了熊猫。cut您是否将生成的类别转换为字符串列表,或者这些元素在实际代码中仍然是分类数据类型?请避免
eval
。我知道,但在这种情况下想不出更好的方法
ast.literal\u eval
是非常安全的,但RIT不起作用……我想找到一种不丢失队列的方法classes@dimitrisGmk你所说的类的“形成”是什么意思?关键函数对它们进行排序,就像它们是元组一样,但实际上不会更改值。
sorted
创建一个新列表,而不会修改旧列表。
['(0, 10]', '(10, 20]', '(20, 30]', '(30, 40]', '(40, 50]', '(50, 60]',
 '(60, 70]', '(70, 80]', '(80, 90]', '(90, 100]', '(100, 110]', '(110, 120]',
'(120, 130]', '(130, 140]', '(140, 150]', '(150, 160]', '(160, 170]', 
'(170, 180]', '(180, 190]', '(190, 200]', '(200, 210]', '(210, 220]', '(230, 240]']