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 .
