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个索引的元素划分到其排序位置。 axis : 要排序的轴。 如果为 默认值为 kind : 选择算法。 默认值为 或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])