numpy中常用的统计函数
numpy中常用统计函数 numpy普通统计函数 忽略 NaN 值进行统计 百分位数
numpy中形状转换函数 重塑数组(reshape) 展平数组(flatten/ravel) 转置(transpose/T)
数据类型的转换
元素值转换 数学转换 np.all(), np.any()
numpy中常用统计函数
numpy普通统计函数
-🍑 np.average是加权平均值,而我们平时所说的平均值用np.mean()。 -🍑 通过指定axis参数,可以对多维数组的特定轴进行统计。 -🍑 axis=0:按列计算, axis=1:按行计算。
函数 描述 示例代码 np.sum() 计算数组元素的总和 np.sum(arr), arr.sum() np.mean() 计算平均值 np.mean(arr), arr.mean() np.median() 计算中位数 np.median(arr), arr.median() np.min() 计算最小值 np.min(arr), arr.min() np.max() 计算最大值 np.max(arr), arr.max() np.argmin() 返回最小值的索引 np.argmin(arr), arr.argmin() np.argmax() 返回最大值的索引 np.argmax(arr), arr.argmax() np.ptp() 计算(最大值 - 最小值) np.ptp(arr), arr.ptp() np.std() 标准差 np.std(arr), arr.std() np.average() 加权平均值 np.average(arr)
code:
import numpy as np
arr = np. array( [ 1 , 2 , 3 ] )
weights = np. array( [ 0.1 , 0.3 , 0.6 ] )
print ( np. average( arr, weights= weights) )
result:
2.5
忽略 NaN 值进行统计
函数 描述 示例代码 np.nansum() 忽略 NaN 计算总和 np.nansum(arr) np.nanmean() 忽略 NaN 计算均值 np.nanmean(arr) np.nanstd() 忽略 NaN 计算标准差 np.nanstd(arr)
百分位数
🍓 百分位数是统计分析中常用的指标。 🍓 例如中位数(第 50 百分位数)、四分位数(第 25、50、75 百分位数)。 🍓 会自动对原来的数据进行排序,并且进行插值。 🍓 0-100用percentile,0-1用quantile。
函数 描述 示例代码 np.percentile() 计算指定百分位数的值 np.percentile(arr, q=25) np.quantile() 计算指定分位数的值(0-1 范围) np.quantile(arr, q=0.25)
code:
import numpy as np
arr = np. array( [ 1 , 2 , 3 ] )
res_linear = np. percentile( arr, q= 70 , interpolation= "linear" )
res_lower = np. percentile( arr, q= 70 , interpolation= "lower" )
res_higher = np. percentile( arr, q= 70 , interpolation= "higher" )
res_nearest = np. percentile( arr, q= 70 , interpolation= "nearest" )
res_midpoint = np. percentile( arr, q= 70 , interpolation= "midpoint" )
print ( f"res_linear= { res_linear} , res_lower= { res_lower} , res_higher= { res_higher} ,"
f" res_nearest= { res_nearest} , res_midpoint= { res_midpoint} ," )
result:
res_linear= 2.4 , res_lower= 2 , res_higher= 3 , res_nearest= 2 , res_midpoint= 2.5
numpy中形状转换函数
重塑数组(reshape)
🌹 不改变数组数据的前提下,对数组的维度进行重新调整。 🌹 numpy.reshape(arr, newshape, order=‘C’)或者arr.reshape(newshape, order=‘C’)。 🌹 元素数量要匹配. 🌹 灵活的维度指定:在newshape里,至多可以有一个维度的值设为-1。 🌹 reshape返回的是原数组的一个视图,如果视图的数据被改变,原数据也会改变 。
code:
import numpy as np
arr1 = np. array( [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ] )
arr2 = arr1. reshape( 2 , 4 )
arr3 = arr2. copy( )
arr2[ 1 , 2 ] = 666
arr3. reshape( 4 , - 1 )
print ( "arr1:\n" , arr1)
print ( "arr2:\n" , arr2)
print ( "arr3:\n" , arr3)
result:
arr1:
[ 1 2 3 4 5 6 666 8 ]
arr2:
[ [ 1 2 3 4 ]
[ 5 6 666 8 ] ]
arr3:
[ [ 1 2 3 4 ]
[ 5 6 7 8 ] ]
展平数组(flatten/ravel)
-🍎 flattened = reshaped.flatten() , 返回副本。 -🍎 raveled = reshaped.ravel() , # 返回视图(修改会影响原数组)。
code:
import numpy as np
arr1 = np. array( [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ] )
arr2 = arr1. reshape( 4 , - 1 )
arr3 = arr2. flatten( )
arr4 = arr2. ravel( )
arr3[ 4 ] = 666
arr4[ 0 ] = 168
print ( "arr1:\n" , arr1)
print ( "arr2:\n" , arr2)
print ( "arr3:\n" , arr3)
print ( "arr4:\n" , arr4)
result:
arr1:
[ 168 2 3 4 5 6 7 8 ]
arr2:
[ [ 168 2 ]
[ 3 4 ]
[ 5 6 ]
[ 7 8 ] ]
arr3:
[ 1 2 3 4 666 6 7 8 ]
arr4:
[ 168 2 3 4 5 6 7 8 ]
转置(transpose/T)
🍐 transpose()和转置运算符T用于交换数组的维度。 🍐 会反转数组的维度顺序(例如,形状从 (a, b, c) 变为 (c, b, a)) 🍐 transpose() 和 T 通常返回原数组的视图,而非副本 。修改转置后的数组会影响原数组。
code:
import numpy as np
arr1 = np. arange( 24 ) . reshape( 2 , 3 , 4 )
print ( "arr1:\n" , arr1)
print ( arr1. shape)
arr2 = arr1. T
print ( "arr2:\n" , arr2)
print ( arr2. shape)
result:
arr1:
[ [ [ 0 1 2 3 ]
[ 4 5 6 7 ]
[ 8 9 10 11 ] ]
[ [ 12 13 14 15 ]
[ 16 17 18 19 ]
[ 20 21 22 23 ] ] ]
( 2 , 3 , 4 )
arr2:
[ [ [ 0 12 ]
[ 4 16 ]
[ 8 20 ] ]
[ [ 1 13 ]
[ 5 17 ]
[ 9 21 ] ]
[ [ 2 14 ]
[ 6 18 ]
[ 10 22 ] ]
[ [ 3 15 ]
[ 7 19 ]
[ 11 23 ] ] ]
( 4 , 3 , 2 )
code:
import numpy as np
arr1 = np. array( [ list ( range ( 1 , 4 ) ) , list ( range ( 11 , 44 , 11 ) ) ] )
arr2 = arr1. transpose( )
arr2[ 1 , 1 ] = 666
print ( "arr1:\n" , arr1)
print ( "arr2:\n" , arr2)
result:
arr1:
[ [ 1 2 3 ]
[ 11 666 33 ] ]
arr2:
[ [ 1 11 ]
[ 2 666 ]
[ 3 33 ] ]
数据类型的转换
使用astype()转换类型
🍍 原数据类型并不发生变化。 🍍 可以直接实现字符串到数字的转化。
code:
import numpy as np
arr1 = np. array( [ 1.5 , 2.3 , 3.7 ] )
arr2 = arr1. astype( int )
arr3 = arr1. astype( bool )
print ( "arr1:\n" , arr1)
print ( "arr2:\n" , arr2)
print ( "arr3:\n" , arr3)
result:
arr1:
[ 1.5 2.3 3.7 ]
arr2:
[ 1 2 3 ]
arr3:
[ True True True ]
code:
import numpy as np
arr1 = np. array( [ '1' , '2' , '3' ] )
arr2 = arr1. astype( int )
arr3 = arr2. astype( str )
print ( "arr1:\n" , arr1)
print ( "arr2:\n" , arr2)
print ( "arr3:\n" , arr3)
result:
arr1:
[ '1' '2' '3' ]
arr2:
[ 1 2 3 ]
arr3:
[ '1' '2' '3' ]
元素值转换
code:
import numpy as np
arr1 = np. array( [ 1.4945 , 2.5245 , 3.5221 ] )
arr2 = np. round ( arr1, 2 )
arr3 = np. floor( arr1)
arr4 = np. ceil( arr1)
print ( "arr1:\n" , arr1)
print ( "arr2:\n" , arr2)
print ( "arr3:\n" , arr3)
result:
arr1:
[ 1.4945 2.5245 3.5221 ]
arr2:
[ 1.49 2.52 3.52 ]
arr3:
[ 1. 2. 3. ]
数学转换
🍉 数值计算,np.abs(), np.sqrt(), np.exp(), np.log(),np.log10()。 🍉 三角函数。
功能 函数 角度转弧度 np.deg2rad(), np.radians() 弧度转角度 np.rad2deg(), np.degrees() 三角函数 np.sin(), np.cos(), np.tan() 反三角函数 np.arcsin(), np.arccos(), np.arctan() 四象限反正切 np.arctan2(y, x) 双曲函数 np.sinh(), np.cosh(), np.tanh() 反双曲函数 np.arcsinh(), np.arccosh(), np.arctanh()
np.all(), np.any()
🍍 np.all()判断数组中的所有元素是否都为 True(或非零值),返回一个布尔值 🍍 判断数组中是否存在至少一个元素为 True(或非零值),返回一个布尔值
code:
import numpy as np
arr1 = np. array( [ 1 , 2 , 3 ] )
print ( "np.all(arr1>0):\n" , np. all ( arr1> 0 ) )
print ( "np.all(arr1>2):\n" , np. all ( arr1> 2 ) )
arr2 = np. array( [ [ True , True ] , [ False , False ] ] )
print ( np. any ( arr2, axis= 0 ) )
print ( np. any ( arr2, axis= 1 ) )
result:
np. all ( arr1> 0 ) :
True
np. all ( arr1> 2 ) :
False
[ True True ]
[ True False ]