排序统计函数(argsort、bincount、count)

argsort,argmax与argmin

sort是排序,argsort是返回排序前数字的索引。
argmax与argmin.:一个返回最大值的索引,一个返回最小值的索引。

返回排序索引 

import numpy as np

c = np.array([1,2,5,9,3])

print('输出排序结果:',np.sort(c))
print('输出排序前索引:',np.argsort(c))

print('输出最大值索引:',np.argmax(c))
print('输出最小值索引:',np.argmin(c))

'''
输出排序结果: [1 2 3 5 9]
输出排序前索引: [0 1 4 2 3]
输出最大值索引: 3
输出最小值索引: 0
'''

二维(多维)数组排序

按行排序、按列排序 

import numpy as np

data = np.array([[11, 265, 5, 34, 53],
                 [51, 20, 4, 2, 31],
                 [13, 24, 3, 94, 6]])

print('按照第3列对行排序:\n',data[data[:,2].argsort()])

print('按照第3行对列排序:\n',data.T[data.T[:,2].argsort()].T)
print('按照第3行对列排序:\n',data[:,data[2].argsort()])

'''
按照第3列对行排序:
 [[ 13  24   3  94   6]
 [ 51  20   4   2  31]
 [ 11 265   5  34  53]]

按照第3行对列排序:
 [[  5  53  11 265  34]
 [  4  31  51  20   2]
 [  3   6  13  24  94]]

按照第3行对列排序:
 [[  5  53  11 265  34]
 [  4  31  51  20   2]
 [  3   6  13  24  94]]
'''

import numpy as np

a = np.array([[2, 17,  4, 6],
              [35, 9,  1, 5],
              [22, 12, 3, 2]])


print('按最后一列顺序排序:\n',a[np.lexsort(a.T)])
print('按最后一列逆序排序:\n',a[np.lexsort(-a.T)])
print('按第一列顺序排序:\n',a[np.lexsort(a[:, ::-1].T)])

print('按最后一行顺序排序:\n',a.T[np.lexsort(a)].T)
print('按第一行顺序排序:\n',a.T[np.lexsort(a[::-1, :])].T)

'''
按最后一列顺序排序:
 [[22 12  3  2]
 [35  9  1  5]
 [ 2 17  4  6]]
 
按最后一列逆序排序:
 [[ 2 17  4  6]
 [35  9  1  5]
 [22 12  3  2]]
 
按第一列顺序排序:
 [[ 2 17  4  6]
 [22 12  3  2]
 [35  9  1  5]]
 
按最后一行顺序排序:
 [[ 6  4 17  2]
 [ 5  1  9 35]
 [ 2  3 12 22]]
 
按第一行顺序排序:
 [[ 2  4  6 17]
 [35  1  5  9]
 [22  3  2 12]]
'''

bincount()

用于求numpy中求array出现次数最多的元素及其索引,
与列表list.count(a)统计a在列表中出现的次数很像,但又不同。

import numpy as np

array1 = np.array([1,2,2,5,9,9,9,3,7])
print('输出等距排序后的元素出现次数:',np.bincount(array1))

'''
输出等距排序后的元素出现次数: [0 1 2 1 0 1 0 1 0 3]

分析:
array1 中最大数为9,bin的数量为9+1=10,它的索引值为0—>9
输出的结果也是,依次表示从0到9的元素出现的数量。

它返回的array中0–max等距出现的次数:
	依次是 0 出现次数:0
		  1 出现次数:1
		  2 出现次数:2
		  3 出现次数:1
		  ...
	      8 出现次数:0
	      9 出现次数:3
'''

count()

string 中 某字符 的次数

公式: str.count(sub, start= 0,end=len(string)) 

# coding=utf-8
string = 'Hello World ! Hello Python !'
print "string.count(sub) : ", string.count('H')
print "string.count(sub, 1) : ", string.count('H', 1)
print "string.count(sub, 1, 100) : ", string.count('H', 1, 100) # 随便取个 无限大的 end 参数

'''
string.count(sub) :  2
string.count(sub, 1) :  1
string.count(sub, 1, 100) :  1
'''

list 中 某元素 的次数

公式: list.count(obj)

list = [10, 20, 30, 'Hello', 10, 20]
print "list.count('Hello') : ", list.count('Hello')
print "list.count(10) : ", list.count(10)

'''
list.count('Hello') :  1
list.count(10) :  2
'''

参考博客

python中count()、values_counts()、size()函数_且行且安~的博客-CSDN博客_value_count得到什么

Numpy 中排序统计函数(argsort,bincount)_SongpingWang的博客-CSDN博客

猜你喜欢

转载自blog.csdn.net/m0_61899108/article/details/127833161
今日推荐