Python numpy.partition函数方法的使用

NumPy(Numerical Python的缩写)是一个开源的Python科学计算库。使用NumPy,就可以很自然地使用数组和矩阵。NumPy包含很多实用的数学函数,涵盖线性代数运算、傅里叶变换和随机数生成等功能。本文主要介绍一下NumPy中partition方法的使用。

numpy.partition

numpy.partition(a, kth, axis=-1, kind='introselect', order=None)     [source]

返回数组的分区副本。

创建一个数组的副本,并对数组中的元素进行重新排列,使第k个位置上的元素的值在已排序的数组中所处的位置。所有小于第k个元素的元素都被移到这个元素前面,所有等于或大于这个元素的元素都被移到它后面。这两个分区中元素的顺序是未定义的。

1.8.0版中的新功能。

参数 :

a :array_like

要排序的数组。

kth :int 或 int的sequence

分区依据的元素索引。 

元素的第k个值将处于其最终排序位置,

所有较小的元素将在其之前移动,

而所有相等或较大的元素将在其后面移动。 

分区中所有元素的顺序是不确定的。 

如果提供了第k个序列,

它将立即将所有按k个索引的元素划分到其排序位置。

axisintNone, 可选

要排序的轴。 如果为None,则在排序之前将数组展平。

 默认值为-1,它沿着最后一个轴排序。

kind{‘introselect’}, 可选

选择算法。 默认值为‘introselect’

或der :str 或 str的list, 可选

当a是一个定义了字段的数组时,

这个参数指定了第一个、第二个比较的字段,

等等。可以将单个字段指定为字符串。

并非所有字段都需要指定,

但仍将使用未指定字段,

按照它们在dtype中出现的顺序,以断开连接。

返回值 :

partitioned_array :ndarray

与a具有相同类型和形状的数组。

Notes

各种选择算法的特征在于它们的平均速度,最差性能,工作空间大小以及它们是否稳定。 稳定的排序使具有相同键的项以相同的相对顺序保持。 可用算法具有以下属性:

沿着除最后一个轴以外的任何一个进行分区时,所有分区算法都会临时复制数据。 因此,与沿任何其他轴进行分区相比,沿最后一个轴进行分区速度更快且占用的空间更少。

复数的排序顺序是字典排序的。如果实部和虚部都是非nan,那么顺序由实部决定,除非它们相等,在这种情况下,顺序由虚部决定。

例子

>>> a = np.array([3, 4, 2, 1])
>>> np.partition(a, 3)
array([2, 1, 3, 4])
>>> np.partition(a, (1, 3))
array([1, 2, 3, 4])
推荐阅读
cjavapy编程之路首页