NumPy数组的排序——python
⼀、快速排序——np.sort()、np.argsort()
np.sort()——不修改原始数组的基础上返回⼀个排好序的数组:
>>>x = np.array([2,1,4,3,5])
>>>np.sort(x)
array([1,2,3,4,5])
np.argsort()——得到排好序后的每个元素的原始索引值:
>>>i = np.argsort(x)
array([1,0,3,2,4], dtype=int64)
沿着⾏和列排序:
简单来说就是在原来排列的函数上加⼊参数 axis,这与其他函数对数组操作类似,其具体表⽰的意义
应该牢记。>>>rand = np.random.RandomState(42)# 随机数的种⼦,种⼦不同所产⽣的随机数也不同
>>>x = rand.randint(1,10,(4,6))
array([[7,4,8,5,7,3],
[7,8,5,4,8,8],
[3,6,5,2,8,6],
[2,5,1,6,9,1]])
>>>np.sort(x, axis=0)# 对每⼀列进⾏排列
array([[2,4,1,2,7,1],
[3,5,5,4,8,3],
[7,6,5,5,8,6],
[7,8,8,6,9,8]])
>>>np.sort(x, axis=1)# 对每⼀⾏进⾏排列
array([[3,4,5,7,7,8],
[4,5,7,8,8,8],快速排序python实现
[2,3,5,6,6,8],
[1,1,2,5,6,9]])
⼆、部分排序——分隔
np.partition()——把⽐ key 值⼩的放⼀边,⽐ key 值⼤的放⼀边
>>>x = np.array([7,2,3,1,6,5,4])
>>>np.partition(x,3)
array([2,1,3,4,6,5,7])
也可以对每⼀⾏或每⼀列进⾏如此操作:
>>>rand = np.random.RandomState(42)# 随机数的种⼦,种⼦不同所产⽣的随机数也不同
>>>x = rand.randint(1,10,(4,6))
array([[7,4,8,5,7,3],
[7,8,5,4,8,8],
[3,6,5,2,8,6],
[2,5,1,6,9,1]])
>>>np.partition(x,2, axis=1)# 对每⼀⾏,以 2 为 key 分开元素
array([[3,4,5,8,7,7],
[4,5,7,8,8,8],
[2,3,5,6,8,6],
[1,1,2,6,9,5]])
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论