参考链接: 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. ]])
>>>
>>>