Python np.sort() and np.ndarray.sort()函数用法

numpy.sort()调用方法:

numpy.sort(a, axis=-1, kind=None, order=None)

各个参数意义:
a:被排序的数组对象
axis:选择按照哪一个坐标轴进行排序,如果设定为None值,就会先对被排序数组进行扁平化,再进行排序。如果不进行值的而设定,那么默认值为-1,即沿着最后一个坐标轴进行排序。
kind:四种sort算法可以被选择,如{‘quicksort’, ‘mergesort’, ‘heapsort’, ‘stable’},默认算法为‘quicksort’。 order`:字符串或者字符串列表。如果为字符串,则表示对选择类别进行排序。若为字符串列表,则表示先对第一个字符类别进行排序,再对第二个字符类别进行排序。
有返回值,返回一个复制的排列好顺序的数组。
代码如下:

# -*- coding:utf-8 -*-
"""
author: 15025
time: 2020/12/30 20:27
software: PyCharm
"""
import numpy as np


class Debug:
    @staticmethod
    def mainProgram():
        array = np.array([[1, 3], [2, 4]])
        array_ = np.sort(array, axis=None)
        print("array_的值为:")
        print(array_)


if __name__ == "__main__":
    main = Debug()
    main.mainProgram()
"""
array_的值为:
[1 2 3 4]
"""

我们可以看到,当我们设定axis=None的时候,会先对被排序的数组初始化,然后再进行排序操作,最终我们获得了一个一维排好序的数组。

# -*- coding:utf-8 -*-
"""
author: 15025
time: 2020/12/30 20:27
software: PyCharm
"""
import numpy as np


class Debug:
    @staticmethod
    def mainProgram():
        array = np.array([[3, 1], [4, 2]])
        array_ = np.sort(array)
        array_1 = np.sort(array, axis=-1)
        print("array_的值为:")
        print(array_)
        print("array_1的值为:")
        print(array_1)


if __name__ == "__main__":
    main = Debug()
    main.mainProgram()
"""
array_的值为:
[[1 3]
 [2 4]]
array_1的值为:
[[1 3]
 [2 4]]
"""

我们可以看到,当我们不设置axis参数时,得到的结果与设定axis=-1的结果一致。

# -*- coding:utf-8 -*-
"""
author: 15025
time: 2020/12/30 20:27
software: PyCharm
"""
import numpy as np


class Debug:
    @staticmethod
    def mainProgram():
        dtype = [('name', 'S10'), ('height', float), ('age', int)]
        values = [('Arthur', 1.8, 41), ('Lancelot', 1.9, 38),
                  ('Galahad', 1.7, 38)]
        # 创建一个结构数组
        array = np.array(values, dtype=dtype)
        array_ = np.sort(array, order='height')
        print("创建好的结构数组array的值为:")
        print(array)
        print("array_的值为:")
        print(array_)


if __name__ == "__main__":
    main = Debug()
    main.mainProgram()
"""
创建好的结构数组array的值为:
[(b'Arthur', 1.8, 41) (b'Lancelot', 1.9, 38) (b'Galahad', 1.7, 38)]
array_的值为:
[(b'Galahad', 1.7, 38) (b'Arthur', 1.8, 41) (b'Lancelot', 1.9, 38)]
"""

我们可以看到,当我们指定order为一个字符串的时候,表示以这个字符串所代表的对象进行排序。即这里按照高度height来排序。

这里介绍一种可以将数组元素从大到小排列的方法。

# -*- coding:utf-8 -*-
"""
author: 15025
time: 2020/12/30 20:27
software: PyCharm
"""
import numpy as np


class Debug:
    @staticmethod
    def mainProgram():
        array = np.array([[1, 3], [2, 4]])
        array_ = abs(np.sort(-array, axis=None))
        print("array_的值为:")
        print(array_)


if __name__ == "__main__":
    main = Debug()
    main.mainProgram()
"""
array_的值为:
[4 3 2 1]
"""

从上述结果可以看出,已经成功将数组元素从大到小完成排列。

numpy.ndarray.sort()函数与numpy.sort()参数完全一致,只是二者在调用方式上存在差异,numpy.ndarray.sort()函数调用方式如下:

ndarray.sort(axis=-1, kind=None, order=None)

例如:

array = np.array([[1,4], [3,1]])
array.sort(axis=1)

码字不易,如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勤奋的大熊猫

你的鼓励将是我写作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值