一、快速概述
np.partition是numpy包内的一个函数,功能是对numpy数组进行分割(partition操作),返回排序(或未排序)数组的切割结果。 partition(a, kth, axis=- 1, kind=’introselect’, order=None),其中a:输入的numpy数组,kth:分割点所在的位置,axis:分割轴的方向,kind:指明partition使用的算法,order:指定排序方式。
二、分割操作
np.partition的基本思路是把数组分成三部分:第一部分是小于等于分割点的元素,第二部分是等于分割点的元素,第三部分是大于分割点的元素。当kth参数为整数时,代表着分割点在经过排序的后数组中的索引位置(此值可以为负)。当kth参数为数组时,函数将返回一个数组,其中每个元素对应于对应传递数组中元素的分割索引位置。
三、代码示例
import numpy as np
#样例数组
a = np.array([3, 4, 2, 1, 5, 0])
#对a数组按分割点3进行分割后的结果
print(np.partition(a, 3))
#对a数组按照分割点3分割,并返回分割点位置在经过排序后的索引
print(np.partition(a, 3).argsort())
#对二维数组按照列分割
print(np.partition(a, (1, 3), axis=1))
#选择分割算法
print(np.partition(a, 3, kind='heapsort'))
四、参数详解
1、kth参数
kth参数可以指定分割点所在的位置,可以是一个整数或一个数组。当kth为整数时,代表分割的位置在输出数组中的索引位置;当其为数组时,每个元素对应于对应传递数组中元素的分割索引位置。
2、axis参数
axis参数指定了分割的方向,axis可以是0或1,表示将数组分割成行的方向和列的方向,当axis=1时,按列分割。
3、kind参数
kind参数指定了numpy进行分割时所采用的算法。默认值是“introselect”, 它对大多数数据集提供最佳性能。还可以选择“heap”或“quicksort”算法。
4、order参数
order参数指定如何比较元素。默认为“None”,使用默认值时,函数使用Any算法。不过,我们可以将其设置为“C”、“F”或“complex”,并将a指定为以相应顺序存储的数组。
五、小结
np.partition是numpy数组的一个重要的操作,能够分割数组的各个部分,支持选择算法和排序方式等多种参数调整。使用np.partition可以提高数组处理的效率和准确度。
原创文章,作者:DSSCD,如若转载,请注明出处:https://www.506064.com/n/369264.html