Skip to main content
 首页 » 编程设计

python之在 Numpy 中使用 argsort 对列表进行排序

2025年05月04日18langtianya

我在 python 中有一个列表,第一个数字是 [[29.046875, 1], [33.65625, 1], [18.359375, 1], [11.296875, 1], [36.671875, 1], [23.578125 , 1],.......,[34.5625, 1]]

以上列表的 ID 为 listNumber。我正在尝试使用 numpy.argsort 根据浮点元素对其进行排序:

listNumber = np.array(listNumber) 
print(np.argsort(listNumber)) 

但这给了我以下但不确定原因:

[[1 0] 
 [1 0] 
 [1 0] 
 ... 
 [1 0] 
 [1 0] 
 [1 0]] 

为什么要返回这个?还有另一种方法可以解决这个问题吗?

请您参考如下方法:

好的,所以我认为这里发生了两件事:

1- 你的列表是列表的列表

2- 'argsort' 函数:

returns the indices that would sort an array.

根据文档。

所以发生的事情是函数读取列表的每个项目,它本身就是一个列表,比如索引 0 是:

[29.046875, 1]

然后它说,好的,这是另一个列表,所以让我对它进行排序,然后根据如果它是新索引它会去哪里返回一个数字:

[29.046875, 1] -> [1, 0]

因为如果按升序排列,1 会排在 29 之前。 它为每个嵌套列表执行此操作,然后为您提供包含所有这些 1 和 0 的最终列表。

这回答了第一个问题。另一个用户能够回答第二个 :)