numpy-统计排序
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,, axis, kind, order) |
排序,返回副本 | |
np.argsort(arr) |
返回排序的索引 | |
np.searchsorted(arr,value) |
返回插入数据的位置索引,arr 已经排序 |
|
np.lexsort() |
多个序列进行排序 |
- kind: 默认为'quicksort'(快速排序)
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)
array([3, 3, 3, 5, 6, 7, 8, 8])
查找
np.where()
1、不带条件
返回tuple,第一个值是索引,第二个是空值
输入必须是 数组,不能是 list
输入一般是一维,行向量或者列向量都可以
2、带条件
np.where(condition, x, y)
满足条件(condition
),输出x
,不满足输出y
。
import numpy as np
x = np.arange(9.).reshape(3, 3)
print ('原数组:')
print (x)
print ( '大于 3 的元素的索引:')
y = np.where(x > 3)
print (y)
print ('获取选择后的元素:')
print (x[y])
# 执行结果===========================
原数组:
[[0. 1. 2.]
[3. 4. 5.]
[6. 7. 8.]]
大于 3 的元素的索引:
(array([1, 1, 2, 2, 2], dtype=int64), array([1, 2, 0, 1, 2], dtype=int64))
获取选择后的元素:
[4. 5. 6. 7. 8.]
import numpy as np
x = np.arange(9.).reshape(3, 3)
a=np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
print(np.where(a < 5, a, 10*a))
[ 0 1 2 3 4 50 60 70 80 90]
np.extract()
where函数有一点相,不过extract函数是返回满足条件的元素
import numpy as np
aa = np.arange(10)
print(np.extract(aa>8,aa))
# [9]