目录
NumPy模块介绍
NumPy 是 Python 科学计算领域的重要基石,与当前 “躺吃旅行” 话题看似不相关,但在数据处理分析上意义重大。我将从它的核心功能、应用场景和优势等方面展开介绍。
NumPy(Numerical Python)是 Python 语言中用于科学计算的基础库,它提供了高性能的多维数组对象以及大量用于对数组进行操作的函数,是数据科学、机器学习、人工智能等领域不可或缺的工具。NumPy 的核心数据结构是ndarray(多维数组),这种数组允许在内存中以连续的方式存储同类型的数据,相较于 Python 原生列表,它在存储和运算效率上有着显著提升。通过 NumPy,用户可以轻松实现数组的创建、索引、切片、变形,以及各种数学运算,如矩阵乘法、统计计算、傅里叶变换等。
在实际应用中,NumPy 广泛应用于数据分析、机器学习算法的底层实现、图像和信号处理等领域。例如,在机器学习中,数据集通常会被加载并转换为 NumPy 数组进行预处理和模型训练;在图像处理中,图像数据也会被表示为多维数组,借助 NumPy 提供的函数完成图像的滤波、变换等操作。此外,NumPy 还与众多科学计算库紧密集成,如 SciPy、Pandas 等,共同构建起强大的 Python 科学计算生态,极大地提升了数据处理和分析的效率。
本期课程,我将从概念、逻辑、实操、应用4各层面阐释我对这个模块的理解,希望为喜欢Python的学习者提供一个内容详实、逻辑清晰、容易上手的课程。
3.5.1 NumPy 操纵数组元素的逻辑
NumPy 是 Python 中用于科学计算的基础库,其核心是多维数组对象(ndarray)。NumPy 数组操作高效的背后逻辑主要有以下几点:
1. 同质数据类型:NumPy 数组中的元素必须是相同的数据类型(如整数、浮点数等),这使得 NumPy 可以更高效地存储和操作数据。
2. 连续内存块:NumPy 数组在内存中是连续存储的,这使得访问和操作元素的速度远快于 Python 列表。
3. 向量化操作:NumPy 使用向量化操作替代显式循环,大大提高了计算效率。向量化操作是指对整个数组或数组的一部分同时进行操作。
4. 底层实现:NumPy 的核心功能是用 C 语言实现的,避免了 Python 解释器的开销。
3.5.2 添加数组元素操作
1. append() 函数
功能:在数组的末尾添加值,返回一个新数组。
主要参数:
- arr:需要添加元素的数组
- values:需要添加的值,可以是单个值、列表或数组
- axis:指定沿着哪个轴添加元素,默认值为 None,表示先将数组展平
应用举例:
import numpy as np
# 创建一个一维数组
arr = np.array([1, 2, 3])
print("原数组:", arr)
# 在数组末尾添加一个元素
new_arr = np.append(arr, 4)
print("添加元素后的数组:", new_arr)
# 在数组末尾添加多个元素
new_arr = np.append(arr, [4, 5, 6])
print("添加多个元素后的数组:", new_arr)
# 创建一个二维数组
arr_2d = np.array([[1, 2], [3, 4]])
print("\n原二维数组:\n", arr_2d)
# 沿轴 0 添加元素(添加行)
new_arr_2d = np.append(arr_2d, [[5, 6]], axis=0)
print("沿轴 0 添加元素后的数组:\n", new_arr_2d)
# 沿轴 1 添加元素(添加列)
new_arr_2d = np.append(arr_2d, [[5], [6]], axis=1)
print("沿轴 1 添加元素后的数组:\n", new_arr_2d)
2. insert() 函数
功能:在数组的指定位置插入值,返回一个新数组。
主要参数:
- arr:需要插入元素的数组
- obj:插入点的索引位置
- values:需要插入的值
- axis:指定沿着哪个轴插入元素,默认值为 None,表示先将数组展平
应用举例:
import numpy as np
# 创建一个一维数组
arr = np.array([1, 2, 3, 4])
print("原数组:", arr)
# 在索引 2 处插入元素 5
new_arr = np.insert(arr, 2, 5)
print("插入元素后的数组:", new_arr)
# 在索引