Python 科学计算
Python 凭借其简洁的语法和庞大而活跃的社区,已成为科学计算、数据分析和机器学习领域的主流语言。这在很大程度上要归功于一套强大的开源库,它们为处理大规模数据集和执行复杂数学运算提供了高效的工具。
本章将简要介绍科学计算生态中最核心的三个库:NumPy, Pandas, 和 Matplotlib。
要使用这些库,首先需要安装它们:
bash
pip install numpy pandas matplotlibNumPy: 数值计算的基础
NumPy (Numerical Python) 是 Python 科学计算生态的基石。它提供了一个核心的数据结构:N-维数组对象 (ndarray)。
NumPy 的主要特点:
- 高效的数组操作: NumPy 数组是同类型的元素构成的固定大小的数组。由于其底层是用 C 语言实现的,因此对数组的数学运算速度非常快,远超 Python 的原生列表。
- 广播 (Broadcasting): 允许 NumPy 在形状不同的数组之间执行算术运算,极大地简化了代码。
- 丰富的数学函数: 提供了大量用于线性代数、傅里叶变换和随机数生成的函数。
示例:
python
import numpy as np
# 从 Python 列表创建 NumPy 数组
a = np.array([1, 2, 3, 4, 5])
# 对整个数组执行向量化操作
b = a * 2
print(b) # 输出: [ 2 4 6 8 10]
# 创建一个 2x3 的二维数组(矩阵)
matrix = np.array([[1, 2, 3], [4, 5, 6]])
print(matrix.shape) # 输出: (2, 3)
# 计算数组的平均值
print(np.mean(a)) # 输出: 3.0Pandas: 数据分析与处理
Pandas 是建立在 NumPy 之上的库,为处理结构化数据(如表格数据、时间序列数据)提供了高级的数据结构和分析工具。
Pandas 的核心数据结构:
- Series: 一维带标签的数组,类似于一列数据。它可以存储任何数据类型。
- DataFrame: 二维带标签的数据结构,类似于一个电子表格或 SQL 表。它有行索引和列索引,是 Pandas 中最常用的对象。
Pandas 的主要功能:
- 轻松地从多种文件格式(如 CSV, Excel, SQL 数据库)读取和写入数据。
- 强大的数据筛选、分组、合并、重塑功能。
- 优雅地处理缺失数据。
- 内置时间序列功能。
示例:
python
import pandas as pd
# 创建一个 DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 35, 40],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston']
}
df = pd.DataFrame(data)
# 显示 DataFrame 的前几行
print(df.head())
# 选择 'Age' 大于 30 的行
print(df[df['Age'] > 30])
# 按 'City' 分组并计算平均年龄
print(df.groupby('City')['Age'].mean())Matplotlib: 数据可视化
Matplotlib 是 Python 中最著名的数据可视化库。它提供了一个灵活的平台来创建各种静态、动态和交互式的图表。
基本用法:
通常使用其 pyplot 子模块(通常别名为 plt)来创建图表。
示例:绘制一个简单的线图
python
import matplotlib.pyplot as plt
import numpy as np
# 准备数据
x = np.linspace(0, 10, 100) # 生成从 0 到 10 的 100 个点
y = np.sin(x)
# 创建图表
plt.figure(figsize=(8, 4)) # 设置图表大小
plt.plot(x, y, label='sin(x)') # 绘制线图
# 添加标题和标签
plt.title('Simple Sine Wave')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.legend() # 显示图例
plt.grid(True) # 显示网格
# 显示图表
plt.show()这三个库共同构成了一个强大的生态系统,使得 Python 成为数据科学家和研究人员的首选工具。