对于二维数组来说,axis为0表示每列的和;为1表示每行的和,
对于多维数组来说最大维所求数组维数减去1,axis的数值表示第(数值+1)维度的索引数值变化相加,其他维度的对应相同,最终形成维度数比原来少1的数组,且缺少原来第(数值+1)维度的值
例如对于3 * 2 * 6的数组,当axis=1时,会形成3 * 6的数组,没有了第二维度数值,(arr1代表新数组,arr代表旧数组)且arr1[0][0]=arr[0][0][0]+arr[0][1][0] ; arr1[0][1]=arr[0][0][1]+arr[0][1][1] ; arr1[1][0]=arr[1][0][0]+arr[1][1][0]=2+2=4
axis=0:2*6:arr[0][0][0]+arr[1][0][0]+arr[2][0][0]=2+2+2=6=arr1[0][0]
arr[0][0][1]+arr[1][0][1]+arr[2][0][1]=arr1[0][1]
表示最外层维度的数值变化,其他维度的数值相同
[[ 6 18 24 27 9 15]
[ 6 18 24 27 9 15]]
axis=1:3*6:arr[0][0][0]+arr[0][1][0]
[[ 4 12 16 18 6 10]
[ 4 12 16 18 6 10]
[ 4 12 16 18 6 10]]
axis=2:3*2
[[33 33]
[33 33]
[33 33]]
import numpy as np
#数组是3*2*6
c=np.array([
[#a[0]
[2,6,8,9,3,5], #a[0][0],对应第一个数的索引是a[0][0][0]
[2,6,8,9,3,5] #a[0][1]
],
[#a[1]
[2,6,8,9,3,5], #a[1][0]
[2,6,8,9,3,5] #a[1][1]
],
[#a[2]
[2,6,8,9,3,5], #a[2][0]
[2,6,8,9,3,5] #a[2][1]
]
])
print(c.sum(axis=1))
'''
[[ 4 12 16 18 6 10]
[ 4 12 16 18 6 10]
[ 4 12 16 18 6 10]]
'''
求数组的均值,方法如上
累计求和,且全部存入一维数组中,参数作用同上
c=np.array(
[
[2,6,8,9,3,5],
[2,6,8,9,3,5]
]
)
print(c.cumsum())
#[ 2 8 16 25 28 33 35 41 49 58 61 66]
累计乘积,下面使用了累计求
c=np.array(
[
[2,6,8,9,3,5],
[2,6,8,9,3,5]
]
)
print(c.cumprod(axis=0))
'''
[[ 2 6 8 9 3 5]
[ 4 36 64 81 9 25]]
'''
返回数组的最大值、最小值
分位数,当数值表示的是百分数的整数(1-100),为50时表示平均值了,
c=np.array(
[
[2,6,8,9,3,5],
[2,6,8,9,3,5]
]
)
print(np.percentile(c,50))
print(np.mean(c))
print(np.median(c)) #中位数
'''
5.5
5.5
5.5
'''
计算极差
样本标准差=方差的算术平方根=s=sqrt(((x1-x)^2 +(x2-x)^2 +…(xn-x)^2)/(n-1))
总体标准差=σ=sqrt(((x1-x)^2 +(x2-x)^2 +…(xn-x)^2)/n )
ddof这个参数就是为了作为样本计算,不然是按照总体计算
求标准差
如是总体,标准差公式根号内除以n
如是样本,标准差公式根号内除以n-1 。
我们大量接触的是样本,所以普遍使用根号内除以n-1