numpy-统计排序
目录常用统计函数
最大最小
函数 | 描述 | |
---|---|---|
最小 | np.amin(arr,axis) |
查找指定轴上,数组元素的最小值 |
np.amax(arr,axis) |
查找指定轴上,数组元素的最大值 | |
np.min(arr,axis) |
查找指定轴上,数组元素的最小值 | |
最大 | np.max(arr,axis) |
查找指定轴上,数组元素的最大值 |
np.argmin(arr) |
最小值索引 | |
np.argmax(arr) |
最大值索引 |
import numpy as np
arr = np.array([[50.0, 10, 20], [80.555, 10, 31], [22, 15, 35]])
print(np.min(arr))
print(np.max(arr))
print(np.argmax(arr))
print(np.argmin(arr))
print(np.round(arr,2))
# 10.0 #最小值
# 80.555 #最大值
# 3 # 最大值索引
# 1 # 最小值索引
# [[50. 10. 20. ]
# [80.56 10. 31. ]
# [22. 15. 35. ]]
平均方差
函数 | 描述 | |
---|---|---|
极差 | np.ptp(arr,axis) |
极差---最大值与最小值的差 |
np.sum(arr,axis) |
计算所有元素之和 | |
np.prod(arr,axis) |
计算数组中所有元素之积 | |
np.mean(arr,axis) |
平均数,期望 | |
np.median(arr,axis) |
中位数 | |
np.average(arr,axis,weights) |
加权平均值,带权重 | |
np.percentile(arr,p,axis) |
表示小于这个值的观察值的百分比 | |
np.std(arr,axis) |
计算标准差 | |
np.var(arr,axis) |
计算方差 | |
np.diff |
沿着指定轴计算第N维的离散差值 |
# 最大、最小、及其最大值索引、最小值索引
# np.ptp(arr,axis)
import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
print(a)
print(np.ptp(a))
print(np.ptp(a,1))
#
#[[1 2 3]
# [4 5 6]
# [7 8 9]]
#8
#[6 6 6]
#numpy.percentile()
a = np.array([[1, 4, 7], [6, 9, 10]])
print(a)
print(np.percentile(a, 50))
#[[ 1 4 7]
[ 6 9 10]]
6.5
排序
函数 | 描述 | |
---|---|---|
np.sort(arr) |
排序,返回副本 | |
np.argsort(arr) |
返回排序的索引 | |
np.searchsorted(arr,value) |
返回插入数据的位置索引,arr 已经排序 |
import numpy as np
arr = np.array([[50.0, 10, 20], [80.555, 10, 31], [22, 15, 35]])
print(np.sort(arr)) # 默认对最高维度进行排序
# [[10. 20. 50. ]
# [10. 31. 80.555]
# [15. 22. 35. ]]
print(np.argsort(arr))
# [[1 2 0]
# [1 2 0]
# [1 0 2]]
print(np.sort(arr,axis=0))
print(np.argsort(arr,axis=0))
# [[22. 10. 20. ]
# [50. 10. 31. ]
# [80.555 15. 35. ]]
# [[2 0 0]
# [0 1 1]
# [1 2 2]]
np.searchsorted() # 返回插入排序数据索引
arr2=np.linspace(0,9,10)
print(arr2)
print(np.searchsorted(arr2,3.5))
# [0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]
# 4
函数 | 描述 | |
---|---|---|
np.unique(arr) |
返回元素,排除重复后,排序 | |
np.intersect1d(arr1,arr2) |
返回交集并排序 | |
np.union1d(arr1,arr2) |
返回并集并排序 | |
np.setdiff1d(arr1,arr2) |
返回二者的差 | |
np.setxor1d(arr1,arr2) |
返回二者的对称差 |
arr1=np.array([1,6,2,3,5,5])
arr2=np.array([8,1,3,6,9])
print(np.unique(arr1))
print(np.intersect1d(arr1,arr2))
print(np.setdiff1d(arr1,arr2))
#[1 2 3 5 6]
#[1 3 6]
#[2 5]
翻转
np.flip
#Reversing a 1D array
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
reversed_arr = np.flip(arr)
print(reversed_arr)
#[8 7 6 5 4 3 2 1]
#-------------------------------------------------------
#Reversing a 2D arra
arr_2d = np.array([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]])
reversed_arr = np.flip(arr_2d)
print(reversed_arr)
#[[12 11 10 9]
# [ 8 7 6 5]
# [ 4 3 2 1]]
reversed_arr_rows = np.flip(arr_2d, axis=0)
print(reversed_arr_rows)
#[[ 9 10 11 12]
# [ 5 6 7 8]
# [ 1 2 3 4]]
reversed_arr_columns = np.flip(arr_2d, axis=1)
print(reversed_arr_columns)
#[[ 4 3 2 1]
# [ 8 7 6 5]
# [12 11 10 9]]
填充函数
np.fill() # 对所有数据填充
fill_diagonal() #
np.clip(x,3,8) # 指定numpy 最小值和最大值
x=np.array([1,2,3,5,6,7,8,9])
np.clip(x,3,8)
Out[88]:
array([3, 3, 3, 5, 6, 7, 8, 8])
查找
np,where()
1、不带条件
返回tuple,第一个值是索引,第二个是空值
输入必须是 数组,不能是 list
输入一般是一维,行向量或者列向量都可以
2、带条件
np.where(condition, x, y)
满足条件(condition
),输出x
,不满足输出y
。
aa = np.arange(10)
print(np.where(aa>5))
#(array([6, 7, 8, 9], dtype=int64),)
print(np.where(aa>5,2,-2))
# [-2 -2 -2 -2 -2 -2 2 2 2 2]
np.extract()
按某条件查找,返回元素
extract(condition, arr)
aa = np.arange(10)
print(np.extract(aa>8,aa))
# [9]