1.前言
使用一组数学函数对numpy数组进行操作的时候,有两种方式计算:对整个数组进行计算;
对源数组的某个轴向的数据进行统计计算;
2.下面是基本的数组统计方法数组统计方法
3.统计函数的分类
下面的所有统计方法,即可以当做数组的实例方法调用,也可以当做顶级numpy函数使用。
import numpy as nparr = np.random.randn(5,4)print(np.xxx(arr))print(arr.xxx())
聚合计算(aggregation,通常叫做约简(reduction))。而不聚合也就是方法调用返回的结果是一个由中间结果组成的数组。聚合计算的方法
import numpy as np
arr = np.random.randn(5,4)#正太分布数据
print("数组中元素求和:",arr.sum())
print("算术平均数:",arr.mean())
print("标准差和方差:",arr.std(),arr.var())
print("最大值和最小值:",arr.max(),arr.min())
数组中元素求和: -2.84952437344
算术平均数: -0.142476218672
标准差和方差: 0.896244709803 0.803254579849
最大值和最小值: 1.95081773969 -1.87576739314
而cumsum以及cumprod方法就是非聚合方法,他返回的是由中间结果组成的一个数组,这样说有点不好理解,下面我使用例子来进行说明。
当然还是先从最简单的二维数组为例说明:
import numpy as np
arr = np.arange(12).reshape(3,4)
print(arr)
print('-----axis = 0-----')
arr_axi0 = np.cumsum(arr,axis = 0)
print(arr_axi0)
print('-----axis = 1-----')
arr_axi1 = np.cumsum(arr,axis = 1)
print(arr_axi1)
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
-----axis = 0-----
[[ 0 1 2 3]
[ 4 6 8 10]
[12 15 18 21]]
-----axis = 1-----
[[ 0 1 3 6]
[ 4 9 15 22]
[ 8 17 27 38]]
从我以前的numpy文章中可以知道对于二维数组他的axis的值与行和列之间的关系二维数组的axis
由此我们也可以看出对于二维数组我们的参数axis的值只能是0和1,那么如何去理解非聚合计算的结果由中间值组成的数组呢?axis = 0的时候,知道他是从行的角度去考虑函数,那如果是一般的聚合计算的函数,如sum...他们返回的是一个向量。但是对于非聚合计算的函数,他们返回的数组shape函数原来数组的shape,他们每一行的值都是上一行值与本行值的和(当然如果使用cumprop方法的话就是上一行值与本行值的积)。
axis = 1的时候,其实和axis = 0的一样,只不过是这里的方向是从列的方向去考虑,也就是shape还和源数组的shape相同,但是其中每一列的值就是本列与上一列的值组成的新列(当然如果使用cumprop方法的话就是上一行值与本行值的积)。