一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第4天,点击查看活动详情。
本篇文章简单介绍一下 Numpy 数组的运算。
基本运算(加减乘除)
如果参与运算的数组shape相同,则对其逐个元素进行运算:
a = np.array([1,2])
b = np.array([3,4])
c = a+b
c
如果参与运算的shape不同,就用到了 Numpy 的广播机制,所谓广播机制,就是党当参与运算的数组shape 不相同的时候,对其中一个数组进行处理,对其进行填充,使两个数组的shape一致,然后进行运算。
Numpy的广播原则: 如果两个数组的后缘维度(即从末尾开始算起的维度)相同或其中一个长度为1,则它们是广播兼容的,广播会在缺失或长度为1的维度上进行。
比如:
- 数组a的shape为(4, 3),数组b为(3,),在进行运算时,数组b会自动扩展成(4,3)。
- 数组a的shape为(2,3),数组b的shape为(1,),在进行运算时,数组b会自动扩展成(2,3)。
# 从末尾开始算的维度
2 3
1
------
2 3
两个数组的后缘维度,要么数值相等,要么有一个为1,要么缺失取大值,除此之外就会报错。
例如下面的两个数组就不能做运算:
数组a的shape为(2,3),数组b的shape为(4,2)
线性代数
此处以矩阵相乘为例,Numpy 提供了dot()函数用来计算矩阵相乘,使用方式如下:
numpy.dot(a, b)
a = np.array([[0,1],[2,3]])
b = np.array([[3,4],[5,6]])
np.dot(a,b)
结果输出为:
array([[ 5, 6],
[21, 26]])
高级用法:使用a@b可快捷实现矩阵相乘。
除此之外,NumPy 提供了线性代数所需的所有函数/功能,此处不再一一介绍。
原创不易,如果小伙伴们觉得有帮助,麻烦点个赞再走呗~
最后,感谢女朋友在工作和生活中的包容、理解与支持 !