图片来源:《星空列车与白的旅行》CG及二创
627 字
2 分钟
笔记|数据分析学习笔记07|ndarray的运算
本系列所有文章都放在
数据科学标签,总目录如下:
7.1 数组间的算术运算
ndarray 最强大的特性之一是支持逐元素的向量化运算——无需手动编写循环,直接对数组使用 +、-、*、/、** 等运算符即可完成对应元素的计算。
一维数组运算
import numpy as np
a = np.array([1, 2, 3])b = np.array([4, 5, 6])
print(a + b) # 对应元素相加print(a - b) # 对应元素相减print(a * b) # 对应元素相乘print(a / b) # 对应元素相除print(a ** 2) # 幂运算输出:
[5 7 9][-3 -3 -3][ 4 10 18][0.25 0.4 0.5 ][1 4 9]与列表的对比
Python 原生列表的 + 运算是拼接而非逐元素相加:
c = [1, 2, 3]d = [4, 5, 6]print(c + d) # 列表直接相加是拼接,而不是对应元素相加输出:
[1, 2, 3, 4, 5, 6]如果要对列表逐元素相加,需要用循环:
for i in range(len(c)): d[i] = c[i] + d[i]print(d) # 列表对应元素相加输出:
[5, 7, 9]对比结论: ndarray 的向量化运算不仅代码更简洁,执行效率也远高于手动循环。
二维数组运算
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])b = np.array([[4, 5, 6], [7, 8, 9], [1, 2, 3]])
print(a + b) # 对应元素相加print(a - b) # 对应元素相减print(a * b) # 对应元素相乘print(a / b) # 对应元素相除print(a ** 2) # 幂运算输出:
[[ 5 7 9] [11 13 15] [ 8 10 12]][[-3 -3 -3] [-3 -3 -3] [ 6 6 6]][[ 4 10 18] [28 40 54] [ 7 16 27]][[0.25 0.4 0.5 ] [0.57142857 0.625 0.66666667] [7. 4. 3. ]][[ 1 4 9] [16 25 36] [49 64 81]]二维数组的算术运算同样是逐元素进行的,要求两个数组形状相同。
7.2 广播机制
当两个数组形状不完全相同时,NumPy 会尝试通过**广播机制(Broadcasting)**自动扩展形状,使运算得以进行。
广播规则: 从末尾维度开始逐维度比较,两个维度满足以下条件之一即可广播:
- 维度大小相同;
- 其中一个维度为 1。
a = np.array([1, 2, 3]) # 形状 (3,)b = np.array([[4], [5], [6]]) # 形状 (3, 1)
print(a + b) # 广播机制print(b - a)输出:
[[5 6 7] [6 7 8] [7 8 9]][[3 2 1] [4 3 2] [5 4 3]]广播过程图解:
a (1×3) 扩展为: b (3×1) 扩展为:1 2 3 4 4 41 2 3 5 5 51 2 3 6 6 6不能广播的情况:
# a = np.array([1, 2, 3]) # 形状 (3,)# b = np.array([4, 5]) # 形状 (2,)# print(a + b) # 报错:形状不兼容,无法广播7.3 矩阵乘法
除了逐元素运算,NumPy 还支持线性代数中的矩阵乘法,使用 @ 运算符或 np.dot() 方法。
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])b = np.array([[4, 5, 6], [7, 8, 9], [1, 2, 3]])
print(a @ b) # 矩阵乘法输出:
[[ 21 27 33] [ 57 72 87] [ 93 117 141]]矩阵乘法计算过程:
a b1 2 3 4 5 64 5 6 7 8 97 8 9 1 2 3结果矩阵第 (i, j) 位置 = a 的第 i 行 与 b 的第 j 列 对应元素相乘再求和。
以结果 (0, 0) 位置为例:
a 第1行: 1 2 3b 第1列: 4 7 11×4 + 2×7 + 3×1 = 4 + 14 + 3 = 217.4 本节小结
本节完成了以下内容:
- 掌握了 ndarray 的逐元素算术运算(
+、-、*、/、**),理解了其与列表运算的本质区别。 - 理解了广播机制的规则:维度从末尾开始比较,相同或有一方为 1 时可广播。
- 掌握了矩阵乘法
@运算符的使用方法及其计算原理。
下一节我们将学习 NumPy 中的基本数学函数,包括平方根、指数、对数、三角函数等。
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
笔记|数据分析学习笔记07|ndarray的运算
https://luq-blog.xyz/posts/2026-07-01-data-notes-07-ndarray-operations/ 部分信息可能已经过时
相关文章 智能推荐
1
笔记|数据分析学习笔记05|ndarray的数据类型
理工研习 学习NumPy中ndarray支持的数据类型,包括布尔、整数、浮点数和复数类型。
2
笔记|数据分析学习笔记04|ndarray的创建
理工研习 本节系统介绍 NumPy 数组(ndarray)的多种创建方法,包括基础构造、预定义形状填充、数值范围生成、特殊矩阵生成和随机数组生成。
3
笔记|数据分析学习笔记03|ndarray的特性与属性
理工研习 本节介绍 NumPy 数组(ndarray)的核心特性与常用属性,帮助读者深入理解 ndarray 的多维性、同质性以及各项属性的含义与用法。
4
笔记|数据分析学习笔记06|索引与切片
理工研习 学习NumPy中ndarray的索引与切片操作,包括基本索引、连续切片、布尔索引及二维数组的访问方式。
5
笔记|数据分析学习笔记18|DataFrame的属性
理工研习 本节介绍 Pandas DataFrame 的常用属性,包括 index、columns、values、shape、dtypes、T 等,掌握 DataFrame 元信息的获取方式。
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)