NumPy-算术和统计
NumPy-算术函数
简单的运算
-
NumPy 算术函数包含简单的加减乘除: add(),subtract(),multiply() 和 divide()。
-
需要注意的是数组必须具有相同的形状或符合数组广播规则。
-
例子
import numpy as np a = np.arange(9, dtype = np.float_).reshape(3,3) b = np.array([10,10,10]) print (b) print (np.add(a,b)) # 输出数组相加结果 [[10. 11. 12.] [13. 14. 15.] [16. 17. 18.]] print (np.subtract(a,b)) # 输出数组相减结果 [[-10. -9. -8.] [ -7. -6. -5.] [ -4. -3. -2.]] print (np.multiply(a,b)) # 输出数组相乘结果 [[ 0. 10. 20.] [30. 40. 50.] [60. 70. 80.]] print (np.divide(a,b)) # 输出数组相除结果 [[0. 0.1 0.2] [0.3 0.4 0.5] [0.6 0.7 0.8]]
numpy.reciprocal()
-
numpy.reciprocal() 函数返回参数逐元素的倒数。
-
例子
import numpy as np a = np.array([0.25, 1.33, 1, 100]) print (np.reciprocal(a)) # 输出 [4. 0.7518797 1. 0.01 ]
numpy.power()
-
numpy.power() 函数将第一个输入数组中的元素作为底数,计算它与第二个输入数组中相应元素的幂。
-
例子
import numpy as np a = np.array([10,100,1000]) print (np.power(a,2)) # 输出 [100 10000 1000000] b = np.array([1,2,3]) print (np.power(a,b)) # 输出 [10 10000 1000000000]
numpy.mod()
-
numpy.mod() 计算输入数组中相应元素的相除后的余数。 函数 numpy.remainder() 也产生相同的结果。
-
例子
import numpy as np a = np.array([10,20,30]) b = np.array([3,5,7]) print (np.mod(a,b)) # 输出 [1 0 2] print (np.remainder(a,b)) # 输出 [1 0 2]
NumPy-统计函数
numpy.amin()
-
numpy.amin() 用于计算数组中的元素沿指定轴的最小值。
-
函数格式
numpy.amin(a, axis=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)
-
参数说明
参数 说明 a 输入的数组,可以是一个NumPy数组或类似数组的对象。 axis 可选参数,用于指定在哪个轴上计算最小值。
如果不提供此参数,则返回整个数组的最小值。
可以是一个整数表示轴的索引,也可以是一个元组表示多个轴。out 可选参数,用于指定结果的存储位置。 keepdims 可选参数
如果为True,将保持结果数组的维度数目与输入数组相同。
如果为False(默认值),则会去除计算后维度为1的轴。initial 可选参数,用于指定一个初始值,然后在数组的元素上计算最小值。 where 可选参数,一个布尔数组,用于指定仅考虑满足条件的元素。 -
例子
import numpy as np a = np.array([[3,7,5],[8,4,3],[2,4,9]]) print (np.amin(a,1)) # 输出 [3 3 2] print (np.amin(a,0)) # 输出 [2 4 3]
numpy.amax()
-
numpy.amax() 用于计算数组中的元素沿指定轴的最大值。
-
函数格式
numpy.amax(a, axis=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)
-
参数说明
参数 描述 a 输入的数组,可以是一个NumPy数组或类似数组的对象。 axis 可选参数,用于指定在哪个轴上计算最大值。
如果不提供此参数,则返回整个数组的最大值。
可以是一个整数表示轴的索引,也可以是一个元组表示多个轴。out 可选参数,用于指定结果的存储位置。 keepdims 可选参数
如果为True,将保持结果数组的维度数目与输入数组相同。
如果为False(默认值),则会去除计算后维度为1的轴。initial 可选参数,用于指定一个初始值,然后在数组的元素上计算最大值。 where 可选参数,一个布尔数组,用于指定仅考虑满足条件的元素。 -
例子
import numpy as np a = np.array([[3,7,5],[8,4,3],[2,4,9]]) print (np.amax(a)) # 输出 9 print (np.amax(a, axis = 0)) # 输出 [8 7 9]
numpy.ptp()
-
numpy.ptp() 函数计算数组中元素最大值与最小值的差(最大值 - 最小值)。
-
函数格式
numpy.ptp(a, axis=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)
-
参数说明
参数 描述 a 输入的数组,可以是一个 NumPy 数组或类似数组的对象。 axis 可选参数,用于指定在哪个轴上计算峰-峰值。
如果不提供此参数,则返回整个数组的峰-峰值。
可以是一个整数表示轴的索引,也可以是一个元组表示多个轴out 可选参数,用于指定结果的存储位置。 keepdims 可选参数如果为 True,将保持结果数组的维度数目与输入数组相同。
如果为 False(默认值),则会去除计算后维度为1的轴。initial 可选参数,用于指定一个初始值,然后在数组的元素上计算峰-峰值。 where 可选参数,一个布尔数组,用于指定仅考虑满足条件的元素。 -
例子
import numpy as np a = np.array([[3,7,5],[8,4,3],[2,4,9]]) print (np.ptp(a)) # 输出 7 print (np.ptp(a, axis = 1)) # 输出 [4 5 7] print (np.ptp(a, axis = 0)) # 输出 [6 3 6]
numpy.percentile()
-
百分位数
- 百分位数是统计中使用的度量,表示小于这个值的观察值的百分比。
- 第 p 个百分位数是这样一个值,它使得至少有 p% 的数据项小于或等于这个值,且至少有 (100-p)% 的数据项大于或等于这个值。
-
函数numpy.percentile() 用于计算百分位数
-
函数格式
numpy.percentile(a, q, axis)
-
参数说明
参数 说描述 a 输入数组 q 要计算的百分位数,在 0 ~ 100 之间 axis 沿着它计算百分位数的轴 -
例子
import numpy as np a = np.array([[10, 7, 4], [3, 2, 1]]) print (np.percentile(a, 50)) # 输出 3.5 print (np.percentile(a, 50, axis=0)) # 输出 [6.5 4.5 2.5] print (np.percentile(a, 50, axis=1)) # 输出 [7. 2.] print (np.percentile(a, 50, axis=1, keepdims=True)) # 输出 [[7.] [2.]]
numpy.median()
-
numpy.median() 函数用于计算数组 a 中元素的中位数(中值)
-
函数格式
numpy.median(a, axis=None, out=None, overwrite_input=False, keepdims=<no value>)
-
参数说明
参数 描述 a 输入的数组,可以是一个 NumPy 数组或类似数组的对象。 axis 可选参数,用于指定在哪个轴上计算中位数。
如果不提供此参数,则计算整个数组的中位数。
可以是一个整数表示轴的索引,也可以是一个元组表示多个轴。out 可选参数,用于指定结果的存储位置。 overwrite_input 可选参数,如果为True,则允许在计算中使用输入数组的内存。
这可能会在某些情况下提高性能,但可能会修改输入数组的内容。keepdims 可选参数
如果为True,将保持结果数组的维度数目与输入数组相同。
如果为False(默认值),则会去除计算后维度为1的轴。 -
例子
import numpy as np a = np.array([[30,65,70],[80,95,10],[50,90,60]]) print (np.median(a)) # 输出 65.0 print (np.median(a, axis = 0)) # 输出 [50. 90. 60.] print (np.median(a, axis = 1)) # 输出 [65. 80. 60.]
numpy.mean()
-
numpy.mean() 函数返回数组中元素的算术平均值,如果提供了轴,则沿其计算。
- 算术平均值是沿轴的元素的总和除以元素的数量。
-
函数格式
numpy.mean(a, axis=None, dtype=None, out=None, keepdims=<no value>)
-
参数说明
参数 描述 a 输入的数组,可以是一个 NumPy 数组或类似数组的对象。 axis 可选参数,用于指定在哪个轴上计算平均值。
如果不提供此参数,则计算整个数组的平均值。
可以是一个整数表示轴的索引,也可以是一个元组表示多个轴。dtype 可选参数,用于指定输出的数据类型。
如果不提供,则根据输入数据的类型选择合适的数据类型。out 可选参数,用于指定结果的存储位置。 keepdims 可选参数
如果为True,将保持结果数组的维度数目与输入数组相同。
如果为False(默认值),则会去除计算后维度为1的轴。 -
例子
import numpy as np a = np.array([[1,2,3],[3,4,5],[4,5,6]]) print (np.mean(a)) # 输出 3.6666666666666665 print (np.mean(a, axis = 0)) # 输出 [2.66666667 3.66666667 4.66666667] print (np.mean(a, axis = 1)) # 输出 [2. 4. 5.]
numpy.average()
-
numpy.average() 函数根据在另一个数组中给出的各自的权重计算数组中元素的加权平均值。
- 该函数可以接受一个轴参数。 如果没有指定轴,则数组会被展开。
-
加权平均值即将各数值乘以相应的权数,然后加总求和得到总体值,再除以总的单位数。
-
函数格式
numpy.average(a, axis=None, weights=None, returned=False)
-
参数说明
参数 说明 a 输入的数组,可以是一个 NumPy 数组或类似数组的对象。 axis 可选参数,用于指定在哪个轴上计算加权平均值。
如果不提供此参数,则计算整个数组的加权平均值。
可以是一个整数表示轴的索引,也可以是一个元组表示多个轴。weights 可选参数,用于指定对应数据点的权重。
如果不提供权重数组,则默认为等权重。returned 可选参数,如果为True,将同时返回加权平均值和权重总和。 -
例子
-
一维数组
import numpy as np a = np.array([1, 2, 3, 4]) print (np.average(a)) # 输出 2.5 wts = np.array([4, 3, 2, 1]) print (np.average(a,weights = wts)) # 输出 2.0 print (np.average([1, 2, 3, 4], weights = [4, 3, 2, 1], returned = True)) # 输出 (2.0, 10.0)
-
多维数组,可以指定用于计算的轴。
import numpy as np a = np.arange(6).reshape(3,2) wt = np.array([3,5]) print (np.average(a, axis = 1, weights = wt)) # 输出 [0.625 2.625 4.625] print (np.average(a, axis = 1, weights = wt, returned = True)) # 输出 (array([0.625, 2.625, 4.625]), array([8., 8., 8.]))
-
标准差
-
标准差是一组数据平均值分散程度的一种度量。
-
标准差是方差的算术平方根。
-
标准差计算公式
std = sqrt(mean((x - x.mean())**2))
-
例子
import numpy as np print (np.std([1,2,3,4])) # 输出 1.1180339887498949
方差
-
统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数
-
计算公式
mean((x - x.mean())** 2)
-
例子
import numpy as np print (np.var([1,2,3,4])) # 输出 1.25