NumPy 简介
什么是 NumPy?
NumPy(Numerical Python)是 Python 科学计算的基础库,它提供了高性能的多维数组对象和处理这些数组的工具。NumPy 是几乎所有 Python 科学计算库的基础,包括 pandas、scikit-learn、matplotlib 等。
为什么选择 NumPy?
1. 高性能
- NumPy 的核心是用 C 语言编写的,比纯 Python 代码快 10-100 倍
- 支持向量化操作,避免了 Python 循环的开销
- 内存使用效率高,数据存储紧凑
2. 功能强大
- 提供了大量的数学函数
- 支持广播(broadcasting)机制
- 丰富的数组操作功能
- 线性代数、傅里叶变换、随机数生成等高级功能
3. 生态系统
- Python 科学计算生态系统的基石
- 与其他库无缝集成
- 庞大的社区支持
NumPy 的核心概念
ndarray(N维数组)
NumPy 的核心是 ndarray 对象,它是一个快速且灵活的大数据集容器。
python
import numpy as np
# 创建一维数组
arr1d = np.array([1, 2, 3, 4, 5])
print(arr1d) # [1 2 3 4 5]
# 创建二维数组
arr2d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2d)
# [[1 2 3]
# [4 5 6]]数据类型
NumPy 支持多种数据类型,比 Python 内置类型更加丰富和精确。
python
# 整数类型
int_array = np.array([1, 2, 3], dtype=np.int32)
# 浮点类型
float_array = np.array([1.0, 2.0, 3.0], dtype=np.float64)
# 布尔类型
bool_array = np.array([True, False, True], dtype=np.bool_)向量化操作
NumPy 支持对整个数组进行操作,无需编写循环。
python
# 传统 Python 方式(慢)
result = []
for i in range(len(list1)):
result.append(list1[i] + list2[i])
# NumPy 方式(快)
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
result = arr1 + arr2 # [5 7 9]NumPy vs Python 列表
| 特性 | Python 列表 | NumPy 数组 |
|---|---|---|
| 数据类型 | 混合类型 | 同质类型 |
| 内存使用 | 较高 | 较低 |
| 性能 | 较慢 | 较快 |
| 功能 | 基础操作 | 丰富的数学函数 |
| 维度 | 一维 | 多维 |
性能对比示例
python
import numpy as np
import time
# 创建大型数据集
size = 1000000
python_list1 = list(range(size))
python_list2 = list(range(size))
numpy_array1 = np.arange(size)
numpy_array2 = np.arange(size)
# Python 列表相加
start_time = time.time()
result_list = [a + b for a, b in zip(python_list1, python_list2)]
list_time = time.time() - start_time
# NumPy 数组相加
start_time = time.time()
result_array = numpy_array1 + numpy_array2
numpy_time = time.time() - start_time
print(f"Python 列表时间: {list_time:.4f} 秒")
print(f"NumPy 数组时间: {numpy_time:.4f} 秒")
print(f"NumPy 比 Python 快 {list_time/numpy_time:.1f} 倍")NumPy 的应用领域
1. 数据科学
- 数据清洗和预处理
- 统计分析
- 数据可视化的基础
2. 机器学习
- 特征工程
- 模型训练的数据准备
- 算法实现的基础
3. 科学计算
- 数值模拟
- 信号处理
- 图像处理
4. 金融分析
- 风险建模
- 投资组合优化
- 时间序列分析
学习 NumPy 的重要性
- 基础技能:NumPy 是 Python 数据科学的基础,掌握它是必要的
- 性能提升:学会使用 NumPy 可以显著提高代码性能
- 生态系统:理解 NumPy 有助于更好地使用其他科学计算库
- 职业发展:NumPy 技能在数据科学、机器学习等领域非常重要
本章小结
- NumPy 是 Python 科学计算的基础库
- 提供高性能的多维数组对象 ndarray
- 支持向量化操作,性能远超 Python 列表
- 是 Python 科学计算生态系统的核心
- 广泛应用于数据科学、机器学习、科学计算等领域
下一步
在下一章中,我们将学习如何安装和配置 NumPy 开发环境,为后续的学习做好准备。
练习题
- 解释 NumPy 相比 Python 列表的主要优势
- 什么是向量化操作?为什么它很重要?
- 列举三个使用 NumPy 的应用场景
- 尝试创建一个简单的 NumPy 数组并打印其内容