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]
posted @ 2021-08-22 15:23  贝壳里的星海  阅读(143)  评论(0编辑  收藏  举报