NumPy库学习笔记(7) NumPy的统计函数和梯度函数

参考链接: NumPy官网

参考链接: NumPy: the absolute basics for beginners

参考链接: Quickstart tutorial

参考链接: Broadcasting广播

参考链接: NumPy 中文教程

参考链接: Python数据分析与展示

函数说明
sum(a, axis=None)根据给定轴axis计算数组a相关元素之和,axis整数或元组
mean(a, axis=None)根据给定轴axis计算数组a相关元素的期望,axis整数或元组
average(a,axis=None,weights=None)根据给定轴axis计算数组a相关元素的加权平均值
std(a, axis=None)根据给定轴axis计算数组a相关元素的标准差
var(a, axis=None)根据给定轴axis计算数组a相关元素的方差
min(a)、 max(a)计算数组a中元素的最小值、最大值
argmin(a)、 argmax(a)计算数组a中元素最小值、最大值的降一维后下标
unravel_index(index, shape)根据shape将一维下标index转换成多维下标
ptp(a)计算数组a中元素最大值与最小值的差
median(a)计算数组a中元素的中位数(中值)

实验代码展示:

Python 3.7.4 (tags/v3.7.4:e09359112e, Jul  8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> import numpy as np
>>> a = np.arange(15).reshape(3,5)
>>> a
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])
>>> np.sum(a)
105
>>> np.mean(a,axis=1)
array([ 2.,  7., 12.])
>>> np.mean(a,axis=0)
array([5., 6., 7., 8., 9.])
>>> np.sum(a,axis=0)
array([15, 18, 21, 24, 27])
>>> np.sum(a,axis=1)
array([10, 35, 60])
>>> np.average(a,axis=0,weights=[10,5,1]) # 求加权平均
array([2.1875, 3.1875, 4.1875, 5.1875, 6.1875])
>>> np.std(a)
4.320493798938574
>>> np.var(a)
18.666666666666668
>>> 
>>> ############################################
>>> 
>>> b = np.arange(15,0,-1).reshape(3,5)
>>> b
array([[15, 14, 13, 12, 11],
       [10,  9,  8,  7,  6],
       [ 5,  4,  3,  2,  1]])
>>> np.max(b)
15
>>> # 输出扁平化后的坐标
>>> np.argmax(b)
0
>>> # 重塑成多维下标
>>> np.unravel_index(np.argmax(b),b.shape)
(0, 0)
>>> np.ptp(b)
14
>>> np.median(b)
8.0
>>> 
>>> b = np.arange(134,43,-1)
>>> b
array([134, 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, 122,
       121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109,
       108, 107, 106, 105, 104, 103, 102, 101, 100,  99,  98,  97,  96,
        95,  94,  93,  92,  91,  90,  89,  88,  87,  86,  85,  84,  83,
        82,  81,  80,  79,  78,  77,  76,  75,  74,  73,  72,  71,  70,
        69,  68,  67,  66,  65,  64,  63,  62,  61,  60,  59,  58,  57,
        56,  55,  54,  53,  52,  51,  50,  49,  48,  47,  46,  45,  44])
>>> np.ptp(b)
90
>>> 
>>> # 计算数组a中元素最大值与最小值的差
>>> np.ptp(b)
90
>>> 
函数说明
np.gradient(f)计算数组f中元素的梯度,当f为多维时,返回每个维度梯度
梯度:连续值之间的变化率,即斜率
XY坐标轴连续三个X坐标对应的Y轴值:a, b, c,其中,b的梯度是: (c‐a)/2
注意:在边界处计算单侧导数,在内部时计算两侧导数

实验代码展示:

Python 3.7.4 (tags/v3.7.4:e09359112e, Jul  8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> import numpy as np
>>> a = np.random.randint(0,20,(5,))
>>> a
array([2, 6, 4, 9, 4])
>>> np.gradient(a)
array([ 4. ,  1. ,  1.5,  0. , -5. ])
>>> b = np.random.randint(0,20,(5,))
>>> b
array([ 4, 16,  9,  8,  7])
>>> np.gradient(b)
array([12. ,  2.5, -4. , -1. , -1. ])
>>> # 以下分析二维的情形
>>> c = np.random.randint(0,50,(3,5))
>>> c
array([[45, 41, 15, 10, 11],
       [20, 10, 29, 28, 41],
       [19, 25, 46, 17, 43]])
>>> np.gradient(c)
[array([[-25. , -31. ,  14. ,  18. ,  30. ],
       [-13. ,  -8. ,  15.5,   3.5,  16. ],
       [ -1. ,  15. ,  17. , -11. ,   2. ]]), array([[ -4. , -15. , -15.5,  -2. ,   1. ],
       [-10. ,   4.5,   9. ,   6. ,  13. ],
       [  6. ,  13.5,  -4. ,  -1.5,  26. ]])]
>>> gradY,gradX = np.gradient(c)
>>> c
array([[45, 41, 15, 10, 11],
       [20, 10, 29, 28, 41],
       [19, 25, 46, 17, 43]])
>>> gradX
array([[ -4. , -15. , -15.5,  -2. ,   1. ],
       [-10. ,   4.5,   9. ,   6. ,  13. ],
       [  6. ,  13.5,  -4. ,  -1.5,  26. ]])
>>> gradY
array([[-25. , -31. ,  14. ,  18. ,  30. ],
       [-13. ,  -8. ,  15.5,   3.5,  16. ],
       [ -1. ,  15. ,  17. , -11. ,   2. ]])
>>> 
>>> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值