目录
NumPy模块介绍
3.6.1 数组之间的运算
3.6.2 算术运算
3.6.3 比较运算
3.6.4 逻辑运算
3.6.5 矩阵运算
3.6.6 广播运算
3.6.7 聚合运算
3.6.8 三角函数与指数对数运算
3.6.9 位运算
3.6.10 条件运算
3.6.11 数组的统计运算
3.6.12 关键问题:数组之间的运算对数组的维度有要求吗?
3.6.13 总结
NumPy模块介绍
NumPy 是 Python 科学计算领域的重要基石,与当前 “躺吃旅行” 话题看似不相关,但在数据处理分析上意义重大。我将从它的核心功能、应用场景和优势等方面展开介绍。
NumPy(Numerical Python)是 Python 语言中用于科学计算的基础库,它提供了高性能的多维数组对象以及大量用于对数组进行操作的函数,是数据科学、机器学习、人工智能等领域不可或缺的工具。NumPy 的核心数据结构是ndarray(多维数组),这种数组允许在内存中以连续的方式存储同类型的数据,相较于 Python 原生列表,它在存储和运算效率上有着显著提升。通过 NumPy,用户可以轻松实现数组的创建、索引、切片、变形,以及各种数学运算,如矩阵乘法、统计计算、傅里叶变换等。
在实际应用中,NumPy 广泛应用于数据分析、机器学习算法的底层实现、图像和信号处理等领域。例如,在机器学习中,数据集通常会被加载并转换为 NumPy 数组进行预处理和模型训练;在图像处理中,图像数据也会被表示为多维数组,借助 NumPy 提供的函数完成图像的滤波、变换等操作。此外,NumPy 还与众多科学计算库紧密集成,如 SciPy、Pandas 等,共同构建起强大的 Python 科学计算生态,极大地提升了数据处理和分析的效率。
3.6.1 数组之间的运算
在 NumPy 中,数组之间的运算可以分为以下几种类型,每种类型都有其独特的应用场景和计算规则:
3.6.2 算术运算
对数组元素执行逐元素的数学运算,包括:
- 基本运算符:+、-、*、/、//(整除)、%(取余)、**(幂运算)
- 对应函数:add()、subtract()、multiply()、divide()、floor_divide()、mod()、power()
示例:
import numpy as npa = np.array([1, 2, 3])
b = np.array([4, 5, 6])print(a + b) # 输出: [5 7 9]
print(a * b) # 输出: [4 10 18]
print(np.power(a, 2)) # 输出: [1 4 9]
3.6.3 比较运算
对数组元素执行逐元素的比较,返回布尔数组,包括:
- 比较运算符:>、<、>=、<=、==、!=
- 对应函数:greater()、less()、greater_equal()、less_equal()、equal()、not_equal()
示例:
a = np.array([1, 2, 3])
b = np.array([2, 2, 2])print(a > b) # 输出: [False False True]
print(a == b) # 输出: [False True False]
数组之间的比较运算在实际运用中还是比较广泛的,为了加深同学们对这一块知识的理解,我编写了两个案例,供大家学习掌握,并能在实际编程中灵活运用。
示例 1:检测学生成绩是否达标
假设有两个班级的数学考试成绩,需要比较哪些学生的成绩达到了 80 分的优秀标准。
import numpy as np# 创建两个班级的成绩数组
class_a = np.array([78, 85, 92, 65, 88])
class_b = np.array([82, 76, 90, 85, 89])# 比较成绩是否达到80分
excellent_a = class_a >= 80
excellent_b = class_b >= 80print("班级A优秀学生:", excellent_a) # [False True True False True]
print("班级B优秀学生:", excellent_b) # [ True False True True True]# 统计优秀学生人数
print("班级A优秀人数:", np.sum(excellent_a)) # 3
print("班级B优秀人数:", np.sum(excellent_b)) # 4
示例 2:筛选符合条件的二维数据
假设有一个二维数组表示商品的价格和销量,需要筛选出价格高于 50 且销量大于 100 的商品。
import numpy as np# 创建商品数据:每行表示 [价格, 销量]
products = np.array([[60, 120],[45, 80],[70, 150],[55, 90],[80, 200]
])# 比较价格和销量
price_high = products[:, 0] > 50 # 价格列
sales_high = products[:, 1] > 100 # 销量列# 同时满足两个条件
both_high = price_high & sales_highprint("价格>50的商品:", price_high) # [ True False True True True]
print("销量>100的商品:", sales_high) # [ True False True False True]
print("符合条件的商品:", both_high) # [ True False True False True]# 筛选符合条件的商品数据
selected_products = products[both_high]
print("筛选结果:\n", selected_products)
# 输出:
# [[ 60 120]
# [ 70 150]
# [ 80 200]]
关键要点
- 比较运算返回布尔数组:可直接用于统计或筛选。
- 多维数组按元素比较:通过索引选择特定维度(如products[:, 0])。
- 逻辑组合条件:使用&(与)、|(或)、~(非)连接多个比较结果。
3.6.4 逻辑运算
对布尔数组执行逐元素的逻辑操作,包括:
- 逻辑运算符:&(与)、|(或)、~(非)、^(异或)
- 对应函数:logical_and()、logical_or()、logical_not()、logical_xor()
示例