Datawhale组队学习 numpy下 Task03 统计相关 打卡

次序统计

计算最大值最小值

numpy.amin() 和 numpy.amax()

numpy.amin() 用于计算数组中的元素沿指定轴的最小值。

  • numpy.amin(a[, axis=None, out=None, keepdims=np._NoValue, initial=np._NoValue,
    where=np._NoValue])

numpy.amax() 用于计算数组中的元素沿指定轴的最大值。

  • numpy.amax(a[, axis=None, out=None, keepdims=np._NoValue, initial=np._NoValue,
    where=np._NoValue])
import numpy as np

a = np.random.randint(5,50,[5,5])
print(a)
print(np.amin(a))     #矩阵a的最小值
print (np.amin(a, axis =  0))    #矩阵a每列的最小值
print (np.amin(a, axis =  1))    #矩阵a每行的最小值
print (np.amax(a))
print (np.amax(a, axis =  0))
print (np.amax(a, axis =  1))
'''
[[16  9 29 32 17]
 [39 14 19 37 41]
 [36 43 12 43 33]
 [ 9 21 45 38 49]
 [30  6 16 18 45]]
6
[ 9  6 12 18 17]
[ 9 14 12  9  6]
49
[39 43 45 43 49]
[32 41 43 49 45]
'''

计算极差

numpy.ptp()

numpy.ptp()函数计算数组中元素最大值与最小值的差(最大值 - 最小值)。

  • numpy.ptp(a, axis=None, out=None, keepdims=np._NoValue)
import numpy as np

np.random.seed(20201126)
a = np.random.randint(0,20,[3,5])
print(a)
print(np.ptp(a))     #矩阵a的极差
print(np.ptp(a,axis = 0))     #矩阵a每列的极差
print(np.ptp(a,axis = 1))     #矩阵a每行的极差
'''
[[ 5 16  4  6  6]
 [ 8  4  6  0 15]
 [18 18 15 19  5]]
19
[13 14 11 19 10]
[12 15 14]
'''

计算分位数

numpy.percentile()

百分位数是统计中使用的度量,表示小于这个值的观察值的百分比。 函数numpy.percentile()接受以下参数。

  • numpy.percentile(a, q, axis)
    a:array,用来算分位数的对象,可以是多维的数组。
    q:介于0-100的float,用来计算是几分位的参数,如四分之一位就是25,如要算两个位置
    的数就[25,75]。
    axis:坐标轴的方向,一维的就不用考虑了,多维的就用这个调整计算的维度方向,取值范
    围0/1。
import numpy as np

a = np.random.randint(0,20,[3,3])
print(a)
print(np.percentile(a,[25,50]))
print(np.percentile(a,[25,50],axis = 0))
print(np.percentile(a,[25,50],1))
'''
[[ 2  5 14]
 [16 11 16]
 [16 10  8]]
[ 8. 11.]
[[ 9.   7.5 11. ]
 [16.  10.  14. ]]
[[ 3.5 13.5  9. ]
 [ 5.  16.  10. ]]
'''

均值与方差

计算中位数

numpy.median()

  • numpy.median(a, axis=None, out=None, overwrite_input=False, keepdims=False)

numpy.median() 函数用于计算数组 a 中元素的中位数(中值)

import numpy as np
a = np.random.randint(0,11,[3,5])
print(a)
print(np.median(a))
print(np.median(a,0))
print(np.median(a,axis = 1))
'''
[[ 0  7  4  9  0]
 [ 8  2  3  5  9]
 [ 4  9  0  8 10]]
5.0
[4. 7. 3. 8. 9.]
[4. 5. 8.]
'''

计算平均值

numpy.mean()

  • numpy.mean(a[, axis=None, dtype=None, out=None, keepdims=np._NoValue)])

numpy.mean() 函数返回数组中元素的算术平均值。 如果提供了轴,则沿其计算。

算术平均值是沿轴的元素的总和除以元素的数量。

import numpy as np

a = np.random.randint(0,11,[3,5])
print(a)
print(np.mean(a))
print(np.mean(a,0))
print(np.mean(a,axis = 1))
'''
[[3 1 8 6 1]
 [8 0 7 6 7]
 [9 3 3 0 0]]
4.133333333333334
[6.66666667 1.33333333 6.         4.         2.66666667]
[3.8 5.6 3. ]
'''

计算加权平均值

numpy.average()

  • numpy.average(a[, axis=None, weights=None, returned=False])

mean 和 average 都是计算均值的函数,在不指定权重的时候 average 和 mean 是一样的。指定权重
后, average 可以计算加权平均值。

加权平均值即将各数值乘以相应的权数,然后加总求和得到总体值,再除以总的单位数。

考虑数组[1,2,3,4]和相应的权重[4,3,2,1],通过将相应元素的乘积相加,并将和除以权重的和,来计算加权平均值。

import numpy as np

a = np.random.randint(0,11,[3,5])
print(a)
#[[4 9 6 7 7]
#[2 9 7 2 1]
#[2 7 0 7 2]]
print(np.mean(a))  #4.8
print(np.mean(a,0))  #[2.66666667 8.33333333 4.33333333 5.33333333 3.33333333]
print(np.mean(a,axis = 1))  #[6.6 4.2 3.6]
print(np.average(a))  #4.8
print(np.average(a,0))  #[2.66666667 8.33333333 4.33333333 5.33333333 3.33333333]
print(np.average(a,axis = 1))  #[6.6 4.2 3.6]
b = np.random.randint(0,5,[3,5])
print(b)
#[3 3 3 1 1]
#[2 0 4 3 3]
#[1 0 3 0 2]
print(np.average(a,weights = b))  #4.068965517241379
print(np.average(a,0,weights = b))  #[3.         9.         4.6        3.25       2.33333333]
print(np.average(a,axis = 1,weights = b))  #[6.45454545 3.41666667 1.        ]

计算标准差

  • numpy.std(a[, axis=None, dtype=None, out=None, ddof=0, keepdims=np._NoValue])

标准差是一组数据平均值分散程度的一种度量,是方差的算术平方根。

标准差公式如下:
std = sqrt(mean((x - x.mean())**2))

import numpy as np 
 
print (np.std([1,2,3,4]))
#1.118033988749895

计算方差

统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数,即 mean((x - x.mean())** 2)。
换句话说,标准差是方差的平方根。

  • numpy.var(a[, axis=None, dtype=None, out=None, ddof=0, keepdims=np._NoValue])

ddof=0:是“Delta Degrees of Freedom”,表示自由度的个数。
要注意方差和样本方差的无偏估计,方差公式中分母上是 n ;样本方差无偏估计公式中分母上是 n‐1 ( n 为样本个数)。

import numpy as np
 
print (np.var([1,2,3,4]))
#1.25

相关

计算协方差矩阵

  • numpy.cov(m, y=None, rowvar=True, bias=False, ddof=None, fweights=None,aweights=None)
import numpy as np
x = [1, 2, 3, 4, 6]
y = [0, 2, 5, 6, 7]
print(np.cov(x)) # 3.7 #样本方差
print(np.cov(y)) # 8.5 #样本方差
print(np.cov(x, y))
# [[3.7 5.25]
# [5.25 8.5 ]]
print(np.var(x)) # 2.96 #方差
print(np.var(x, ddof=1)) # 3.7 #样本方差
print(np.var(y)) # 6.8 #方差
print(np.var(y, ddof=1)) # 8.5 #样本方差
z = np.mean((x ‐ np.mean(x)) * (y ‐ np.mean(y))) #协方差
print(z) # 4.2
z = np.sum((x ‐ np.mean(x)) * (y ‐ np.mean(y))) / (len(x)1) #样本协方差
print(z) # 5.25
z = np.dot(x ‐ np.mean(x), y ‐ np.mean(y)) / (len(x)1) #样本协方差
print(z) # 5.25

计算相关系数

  • numpy.corrcoef(x, y=None, rowvar=True, bias=np._NoValue, ddof=np._NoValue)`
import numpy as np
np.random.seed(20200623)
x, y = np.random.randint(0, 20, size=(2, 4))
print(x) # [10 2 1 1]
print(y) # [16 18 11 10]
z = np.corrcoef(x, y)
print(z)
# [[1. 0.48510096]
# [0.48510096 1. ]]
a = np.dot(x ‐ np.mean(x), y ‐ np.mean(y))
b = np.sqrt(np.dot(x ‐ np.mean(x), x ‐ np.mean(x)))
c = np.sqrt(np.dot(y ‐ np.mean(y), y ‐ np.mean(y)))
print(a / (b * c)) # 0.4851009629263671

练习题

1.计算给定数组中每行的最大值。

a = np.random.randint(1, 10, [5, 3])

如何在二维numpy数组的每一行中找到最大值?

import numpy as np

np.random.seed(20201126)
a = np.random.randint(1, 10, [5, 3])
print(a)
print('矩阵a每行的最大值为:')
print(np.amax(a,1))
'''
[[6 7 7]
 [1 5 7]
 [7 9 5]
 [7 1 3]
 [3 4 5]]
矩阵a每行的最大值为:
[7 7 9 7 5]
'''
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值