数组的排序与整理

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]])

posted on 2018-03-29 22:13  风过竹影  阅读(255)  评论(0编辑  收藏  举报