我试图找出np.partition
函数的工作原理。
例如,考虑
arr = np.array([ 5, 4, 1, 0, -1, -3, -4, 0])
如果我致电np.partition(arr, kth=2)
,我就
np.array([-4, -3, -1, 0, 1, 4, 5, 0])
我希望分区数组之后会将元素分成少一个,一个元素和一个元素。 但是第二个零位于最后一个数组位置,这在分区后不是正确的位置。
答案 0 :(得分:5)
创建数组的副本,其元素以这样的方式重新排列 第k个位置的元素值位于它所处的位置 一个排序的数组。小于第k个元素的所有元素都在之前移动 这个元素和所有相等或更大的元素都移到它后面。订购 两个分区中的元素未定义。
在您给出的示例中,您选择了排序列表的第2个元素(从零开始),即-1,如果数组已排序,它似乎位于正确的位置。
答案 1 :(得分:1)
docs谈论“排序数组”。
np.partition
首先对提供的数组中的元素进行排序。在这种情况下,原始数组为:
arr = [ 5, 4, 1, 0, -1, -3, -4, 0]
排序后,我们有:
arr_sorted = [-4 -3 -1 0 0 1 4 5]
因此,呼叫np.partition(arr, kth=2)
实际上将kth
作为2
而不是arr_sorted
的位置arr
的元素。元素已正确选择为-1
。