知识要点:Numpy数组的操作,函数的使用
广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。
如果两个数组 a 和 b 形状相同,即满足 a.shape == b.shape,那么 a*b 的结果就是 a 与 b 数组对应位相乘。这要求维数相同,
且各维度的长度相同。当运算中的 2 个数组的形状不同时,numpy 将自动触发广播机制(如下图所示);
(注:自动扩充至同等大小的矩阵进行运算)
广播的规则:
让所有输入数组都向其中形状最长的数组看齐,形状中不足的部分都通过在前面加 1 补齐。输出数组的形状是输入数组形状的各个维度上的最大值。如果输入数组的某个维度和输出数组的对应维度的长度相同或者其长度为 1 时,这个数组能够用来计算,否则出错。当输入数组的某个维度的长度为 1 时,沿着此维度运算时都用此维度上的第一组值。简单理解:对两个数组,分别比较他们的每一个维度(若其中一个数组没有当前维度则忽略),满足:
数组拥有相同形状。当前维度的值相等。当前维度的值有一个是 1。迭代器的任务的可以完成对数组元素的访问,迭代器对象 numpy.nditer 提供了一种灵活访问一个或者多个数组元素的方式。
for x in np.nditer(a, order='F'):F order,即是列序优先;for x in np.nditer(a.T, order='C'):C order,即是行序优先;(通过for in循环使用)1、三角函数sin,cos,tan;(arcsin,arccos,和 arctan 函数返回给定角度的 sin,cos 和 tan 的反三角函数。这些函数的结果可以通过 numpy.degrees() 函数将弧度转换为角度。)
2、numpy.around() 函数返回指定数字的四舍五入值。
3、numpy.floor() 返回数字的下舍整数。
4、numpy.ceil()返回数字的上入整数。
例子:(数学函数的简单应用)
import numpy as np array1=np.array([0,30,45,60,90],dtype=int) data=array1*np.pi/180 print(np.sin(data))#各个三角函数值sin print(np.arcsin(np.sin(data)))#各个三角函数值arcsin print(np.degrees(np.arcsin(np.sin(data))))#转化为角度值 print(np.ceil(data))#上取整 print(np.floor(data))#下取整5、NumPy 算术函数包含简单的加减乘除: add(),subtract(),multiply() 和 divide()。
(注:数组必须具有相同的形状或符合数组广播规则。)
6、numpy.reciprocal()用于取到数操作;
7、numpy.power()用于计算乘方;
8、numpy.mod() 计算输入数组中相应元素的相除后的余数。 (7&8当用于多个数组时要符合广播规则)
1、numpy.amin() 用于计算数组中的元素沿指定轴的最小值。
2、numpy.amax() 用于计算数组中的元素沿指定轴的最大值。
3、numpy.ptp()函数计算数组中元素最大值与最小值的差(最大值 - 最小值)。
4、百分位数是统计中使用的度量,表示小于这个值的观察值的百分比。 函数numpy.percentile()接受以下参数。
5、numpy.mean() 函数返回数组中元素的算术平均值。 如果提供了轴,则沿其计算。
6、numpy.average() 函数根据在另一个数组中给出的各自的权重计算数组中元素的加权平均值。
(注:延轴方向0表示纵轴,1表示横轴,没有注明则表示整一个数组)
7、标准差np.std(),用于求标准差;
8、方差np.var(),用于求方差;
例子:(数学函数的简单应用)
import numpy as np array1=np.array([[30,45],[60,90]],dtype=int) print(np.amax(array1)) #打印结果为:90,未标明轴向为全局的最大值 print(np.amax(array1,0)) #打印结果为:【60,90】,0代表纵轴 print(np.amax(array1,1)) #打印结果为:【45,90】,1代表横轴 print(np.amin(array1)) #打印结果为:30,未标明轴向为全局的最小值 print(np.amin(array1,0)) #打印结果为:【30,45】,0代表纵轴 print(np.amin(array1,1)) #打印结果为:【30,60】,1代表横轴 print(np.ptp(array1)) #打印结果为:60,未标明轴向为全局的最大值-最小值 print(np.ptp(array1,0)) #打印结果为:【30,45】,0代表纵轴 print(np.ptp(array1,1)) #打印结果为:【15,30】,1代表横轴 print(np.average(array1))#打印全局的平均值 print(np.average(array1,axis=0)) print(np.average(array1,axis=1))#分别打印纵轴和横轴的平均值 print(np.std(array1))#求标准差 print(np.var(array1))#求方差