聚合规则
聚合操作
- 聚合可以直接作用在数组上面,不需要每次都numpy.xxx调用
- 除any和al之外,每个函数都存在一个NaN安全的版本
- np.sum:和
- np.prod:积
- np.mean:平均数
- np.std:标准差
- np.var:方差
- np.min:最小值
- np.max:最大值
- np.argin:最小值的索引
- np.argmax:最大值的索引
- np.median:中位数
- np.oercentile:基于元素排序的统计值
- np.any:是否至少存在一个为真的元素
- np.all:所有元素是否为真
适合通用函数的聚合
主要指的是reduce和accumulate。
- reduce:功能同python的标准reduce一致,即重复执行某一个操作直到最后一 个结果
- accumulate:计算的中间结果会被存储
import numpy as np
# reduce
a = np. arange(100 )
#把a内所有值进行相加
b = np. add. reduce(a)
print("b = ",b)
#把a内所有制相加,但相加的中间结果需要保存下来
c= np. add . accumulate(a)
print("C = \n", c)
求和
- numpy.sum函数和pythoy的求和函数功能基本一致,但是还是有一 些小区别:
- numpy的求和函数具有维度的概念,求和多项可以是数组
- 同时参数含义跟python的sum并不一致
- numpy.sum速度快一些
import numpy as np
a = np.arange(100).reshape((10,10))
b = np.sum(a)
print("b = ",b)
最大/小值
import numpy as np
#请注意一下三个求最小值的区别
a = np. random. rand (20)
print("a = \n", a)
#调用pyhton的标准min
m1 = min(a)
print("最小值: " , m1)
#调用numpy的min
m2 = np.min(a)
print("最小值:",m2)
# numpy .min的简写形式,跟进a的类型会自动调用numpy.min
m3 = a.min( )
print("最小值: ", m3)
多维度求和
import numpy as np
a = np. random. randint(100,size=(4,5))
print("a = \n", a)
#求最大值,每一行
b = a. max(axis=1)
print ("a每一行的最大值是:",b)
#求每一列的和
c= a.sum(axis=0)
print("a每一列的和是: " ,c)
广播规则
- 如果两个数组维度不相同,则小维度数组形状在最左边补上1
- 如果两数组的形状在任何一个维度上都不匹配,则数组的形状会沿着维度为1的维度扩展,以匹配零位一个数组
- 如果两两个数组的形状在任何一个维度上都不匹配并且没有任何一个维度等于1,则异常
import numpy as np
#规则1案例
a = np.arange(15). reshape((3,5))
b = np. arange(5)
c=a+b
print("a.shape = ",a.shape )
print("a = \n", a)
print( )
print ("b.shape = ",b. shape)
print("b = \n",b)
print()
print("c.shape = ",c.shape )
print("C = \n", c)
import numpy as np
#广播规则2
a = np. arange(5). reshape((5,1) )
b = np.arange(5)
c=a+b
print("a.shape = ",a. shape )
print("a = \n", a)
print( )
print("b.shape = ",b. shape)
print("b = \n", b)
print()
print("c.shape = ",c. shape )
print("c = \n", c)
import numpy as np
#不能广播的案例
a = np.arange(15). reshape((3,5))
b = np. arange (3)
print("a.shape = ",a. shape)
print("b. shape =",b. shape)
c=a+b