Skip to main content
 首页 » 编程设计

python之带有二维数组的 numpy.partition()

2025年05月04日53pander-it

numpy.partition() 也对数组的内部元素进行排序。

我一直在尝试根据数组所有元素的第一个元素进行简单排序。

import numpy as np 
a = np.array([[5.2, 4.3], [200.2, 6.2], [1.4, 112.2]]) 
np.partition(a, (1,a.shape[1]-1), axis = 1) 

输出:

array([[   4.3,    5.2], 
       [   6.2,  200.2], 
       [   1.4,  112.2]]) 

我不明白 np.partition() 在这里的工作原理。有关 numpy.partition() 的详细信息的任何资源?

具体来说,我想修改方法的参数以生成以下输出:

array([[   1.4,   112.2], 
       [    5.2,    4.3], 
       [    200.2,  6.2]]) 

请您参考如下方法:

np.partition() 确保特定索引处的值与数组完全排序时的值相同(例如使用 np.sort) . (不保证其他索引值的顺序有任何意义。)

axis=1 参数表示此操作将单独应用于每一行。

在这里,您传递的索引是 (1, a.shape[1]-1) 在这种情况下等同于 (1, 1) .重复索引没有特殊意义,因此在每一行上,第二列(索引 1)中的值将与每行按排序顺序相同。

现在,应用该操作后,您会在返回的数组中看到第一行和第二行中较高的值已移至第二列。第三行已经按其排序顺序排列,因此没有变化。

这就是函数的全部内容:NumPy documentation涵盖了一些进一步的细节。如果您特别勇敢,可以找到实现 np.partition() 使用的 introselect 算法的源代码,尽其所能 here .