numpy.sort() and numpy.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)

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

你可能感兴趣的:(python科学计算,python,numpy)