Python数据分析之 Numpy 的运算

255 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 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)。

image.png

  • 数组a的shape为(2,3),数组b的shape为(1,),在进行运算时,数组b会自动扩展成(2,3)。
# 从末尾开始算的维度
2   3
    1
------
2   3

两个数组的后缘维度,要么数值相等,要么有一个为1,要么缺失取大值,除此之外就会报错。

例如下面的两个数组就不能做运算:
数组a的shape为(2,3),数组b的shape为(4,2)

image.png

线性代数

此处以矩阵相乘为例,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 提供了线性代数所需的所有函数/功能,此处不再一一介绍。

原创不易,如果小伙伴们觉得有帮助,麻烦点个赞再走呗~

最后,感谢女朋友在工作和生活中的包容、理解与支持 !