数组的排序与整理
1.sort函数
import numpy as np
arr = np.random.randint(1,19,16).reshape(4,4)
arr.sort(0)按列排序
arr.sort(1)按行排序
注意当使用sort时原数组会改变,当使用 np.sort(arr) 时原数组不会被改变
例子:
arr
Out[140]:
array([[15, 9, 7, 7],
[18, 8, 8, 6],
[12, 13, 15, 1],
[17, 7, 6, 10]])
arr.sort(0)
arr
Out[143]:
array([[12, 7, 6, 1],
[15, 8, 7, 6],
[17, 9, 8, 7],
[18, 13, 15, 10]])
2.unique函数
arr = np.array([[2,8,3,1],[12,18,10,15],[12,18,10,15],[0,6,2,3]])
arr
Out[157]:
array([[ 2, 8, 3, 1],
[12, 18, 10, 15],
[12, 18, 10, 15],
[ 0, 6, 2, 3]])
(1)np.unique(arr)
直接返回去重的一维数组
Out[158]: array([ 0, 1, 2, 3, 6, 8, 10, 12, 15, 18])
如果加上return_counts ,可以返回每个元素的重复的个数
np.unique(arr,return_counts=True)
Out[159]:
(array([ 0, 1, 2, 3, 6, 8, 10, 12, 15, 18]),
array([1, 1, 2, 2, 1, 1, 2, 2, 2, 2], dtype=int64))
(2)np.unique(arr,axis = 0)
如果有两行的元素完全一样则会去重(行去重)
然后按照每一行的第一个元素比较大小,从上向下排列 (注意只比较每行第一个元素大小)
Out[160]:
array([[ 0, 6, 2, 3],
[ 2, 8, 3, 1],
[12, 18, 10, 15]])
(3)np.unique(arr,axis=1)
如果有两列元素完全相同,则会去重(列去重)
然后按照每一列的第一个元素比较大小,从左向右(仅比较第一个元素)
Out[163]:
array([[ 1, 2, 3, 8],
[15, 12, 10, 18],
[15, 12, 10, 18],
[ 3, 0, 2, 6]])