首页 > 技术文章 > 数学和统计方法

chanyuli 2019-10-29 23:44 原文

介绍几个基础数组统计方法:

1、 sum():沿着轴向计算所有原色的累和,0长度的数组累和为0

import  numpy as np
arr = np.array([[3,3],[1,9],[4,8]])
print(arr)
print(arr.mean(1))# axis=1的时候行平均值  0的时候计算列平均值(书本112页有错误)

结果
[[3 3]
 [1 9]
 [4 8]]
--------
[3. 5. 6.]

2、mean():求数学平均,0长度的数组平均值为NaN

print(arr.sum(1)) #axis=1的时候行和 0 的时候计算列和
print('--------')


结果
[3. 5. 6.]

3、cumsum():从0 开始元素累积和

arr1 = np.array([0,1,2,3,4,5,6,7,8])
print(arr1.cumsum())


结果
[ 0  1  3  6 10 15 21 28 36]
#结果解析:从0开始加,一开始的值就是0,0开始加第一个数,0+0=0,上一个结果拿来继续加数组第二个数字 0+1=1 ,1+2=3, 3+3=6。。。。。。以此类推

4、cumprod():从1开始元素累积积

arr2 = np.array([[0,1,2],[3,4,5],[6,7,8]])
print(arr2)
print('------------')
print(arr2.cumsum(axis=0))
print('------------')
print(arr2.cumprod(axis=1))


结果
[[0 1 2]
 [3 4 5]
 [6 7 8]]
------------
[[ 0  1  2]
 [ 3  5  7]
 [ 9 12 15]]
------------
[[  0   0   0]
 [  3  12  60]
 [  6  42 336]]
#结果解析:cumsum加了axis=0 之后就是按列来算    cumprod指定了axis=1,所以是行,从1开始乘,1*0=0,所以第一行全都是0,第二行就是1*3=3, 3*4=12,  12*5=60,第三行就是1*6=6,6*7=42,42*8=336.

axit这个参数很重要,如果不写的话就会把你的结果变成是一个一位数组,而不是默认为axis=0 !!

基本统计方法

方法 作用
sum 求和
mean 均值
std,var 标准差和方差(自由度默认为n)
min,max 极值
argmin,argmax 极值的索引
cumsum 所有元素累和
cumprob 所有元素累积

推荐阅读