Python学习-Numpy-3

Numpy数字统计函数

np.sum所有元素的和
np.prod所有元素的乘积
np.cumsum元素的累积加和(前1,前2..元素累加)
np.cumprod元素的累积乘积(前1,前2..元素累乘)
np.min最小值
np.max最大值
np.percentile0-100百分位数
np.quantile0-1分位数
np.median中位数
np.mean平均值
np.std标准差
np.var方差
np.average加权平均,参数可以指定weights

1、函数的应用 

1.1 np.sum(x)

import numpy as np

x=np.arange(12).reshape(3,4)
print("x=",x)
print("np.sum(x)=",np.sum(x))
x= [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
np.sum(x)= 66

 1.2 np.prod(x)

import numpy as np

x=np.arange(12).reshape(3,4)
print("x=",x)
print("np.prod(x)=",np.prod(x))

 x= [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
np.prod(x)= 0

 1.3 np.cumsum(x)

import numpy as np

x=np.arange(12).reshape(3,4)
print("x=",x)
print("np.cumsum(x)=",np.cumsum(x))

x= [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
np.cumsum(x)= [ 0  1  3  6 10 15 21 28 36 45 55 66]

1.4 np.cumprod(x)

import numpy as np

x=np.arange(12).reshape(3,4)
print("x=",x)
print("np.cumprod(x)=",np.cumprod(x))

x= [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
np.cumprod(x)= [0 0 0 0 0 0 0 0 0 0 0 0]

1.5  np.min(x)

import numpy as np

x=np.arange(12).reshape(3,4)
print("x=",x)
print("np.min(x)=",np.min(x))

x= [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
np.min(x)= 0

1.6 np.max(x)

import numpy as np

x=np.arange(12).reshape(3,4)
print("x=",x)
print("np.max(x)=",np.max(x))

x= [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
np.max(x)= 11

1.7  np.percentile和np.quantile

np.percentile和np.quantile,偶数位不存在的数用左右两数和除2

import numpy as np

x=np.arange(12).reshape(3,4)
print("x=",x)
#np.percentile将数组按照从小到大进行排列,然后取排在25%,50%,75%位置的数字
print("np.percentile(x,[25,50,75])=",np.percentile(x,[25,50,75]))

#np.quantile将数组按照从小到大进行排列,然后取排在0.25,0.5,0.75位置的数字
print("np.quantile(x,[0.25,0.5,0.75])=",np.quantile(x,[0.25,0.5,0.75]))

x= [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
np.percentile(x,[25,50,75])= [2.75 5.5  8.25]
np.quantile(x,[0.25,0.5,0.75])= [2.75 5.5  8.25]

1.8 np.median(x)

import numpy as np

x=np.arange(12).reshape(3,4)
print("x=",x)
# 中位数
print("np.median(x)=",np.median(x))

x= [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
np.median(x)= 5.5

1.9  np.mean(x)

import numpy as np

x=np.arange(12).reshape(3,4)
print("x=",x)

# 平均数
print("np.mean(x)=",np.mean(x))

x= [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
np.mean(x)= 5.5

1.10 np.std(x)

import numpy as np

x=np.arange(12).reshape(3,4)
print("x=",x)

# 标准差
print("np.std(x)=",np.std(x))

x= [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
np.std(x)= 3.452052529534663

1.11 np.var(x)

import numpy as np

x=np.arange(12).reshape(3,4)
print("x=",x)

# 方差
print("np.var(x)=",np.var(x))

x= [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
np.var(x)= 11.916666666666666

1.12 np.average(x,weight)

import numpy as np

x=np.arange(12).reshape(3,4)
print("x=",x)

weight= np.random.randn(*x.shape)

# np.np.average加权平均值
print("np.average(x,weight)=",np.average(x,weights=weight))

x= [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
np.average(x,weight)= 5.666459528596581

2、Numpy中axis参数的用途

其中

  • axis=0代表行,按行运算
  • axis=1代表列,按列运算

理解,axis=0代表把行消除,axis=1代表把列消除

import numpy as np

x=np.arange(12).reshape(3,4)
print("x=",x)

print("np.sum(x,axis=0)=",np.sum(x,axis=0))
print("np.sum(x,axis=1)=",np.sum(x,axis=1))

x= [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
np.sum(x,axis=0)= [12 15 18 21]
np.sum(x,axis=1)= [ 6 22 38]

3、 实例,将机器学习中的数据进行标准化

其中

  • 行 代表每个样本数据
  • 列 代表样本的属性值

为什么要进行标准化?

  • 对于机器学习中,不同列的量纲相同,则训练收敛的更快
  • 因为对于属性值来讲,如A属性是价格0-100元,B属性是销量100万+,因此这两个属性没有可比性,因此需要进行标准化
  • 不同的数字代表不同的特征,因此需要按行计算,即axis=0
  • 标准化公式为X=(X-mean(X,axis=0))/std(X,axis=0)
import numpy as np

x=np.arange(12).reshape(3,4)
print("x=",x)

print("标准化",(x-np.mean(x,axis=0)/np.std(x,axis=0)))

x= [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
标准化 [[-1.22474487 -1.22474487 -1.22474487 -1.22474487]
 [ 0.          0.          0.          0.        ]
 [ 1.22474487  1.22474487  1.22474487  1.22474487]]

可以看出每列之和的结果为0

此外,注意x是3*4的数组,而np.mean(x,axis=0)是1*4的数组,这两者是如何相减的呢,即array中的广播机制,把np.mean(x,axis=0)1*4的数组复制成3*4的数组,即把行复制3次进行相减的计算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张飞飞飞飞飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值