您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Python中常见的科学类库怎么用
Python已成为科学计算和数据分析领域的主流语言,这得益于其丰富的科学计算类库生态系统。本文将详细介绍NumPy、SciPy、Pandas、Matplotlib等核心科学类库的使用方法,并通过实际示例展示它们的强大功能。
## 一、NumPy:数值计算基础库
### 1. 基本介绍
NumPy(Numerical Python)是Python科学计算的基石,提供:
- 高性能的多维数组对象
- 数组运算函数
- 线性代数、傅里叶变换等数学工具
```python
import numpy as np
# 从列表创建
arr1 = np.array([1, 2, 3])
# 特殊数组创建
zeros = np.zeros((3,3)) # 全0数组
ones = np.ones((2,4)) # 全1数组
arange = np.arange(10) # 类似range的数组
linspace = np.linspace(0, 1, 5) # 等差数组
random_arr = np.random.rand(3,3) # 随机数组
arr = np.array([[1,2,3], [4,5,6]])
# 形状操作
arr.shape # (2, 3)
arr.reshape(3,2) # 改变形状
# 索引切片
arr[1, 2] # 6
arr[:, 1:3] # 第2-3列
# 数学运算
np.sqrt(arr) # 平方根
np.exp(arr) # 指数
arr.sum() # 求和
arr.mean(axis=0) # 列平均
a = np.array([1,2,3])
b = 2
a * b # array([2,4,6]) # 标量广播
SciPy构建在NumPy基础上,提供: - 高级数学函数 - 科学工程计算工具 - 优化、统计、信号处理等模块
import scipy
from scipy import linalg
A = np.array([[1,2], [3,4]])
b = np.array([5,6])
# 解线性方程组
x = linalg.solve(A, b) # [-4. 4.5]
# 特征值分解
eigenvals, eigenvecs = linalg.eig(A)
from scipy import optimize
# 函数最小化
def f(x):
return (x[0]-1)**2 + (x[1]-2.5)**2
result = optimize.minimize(f, [0,0])
print(result.x) # [1. 2.5]
from scipy import interpolate
x = np.linspace(0, 10, 10)
y = np.sin(x)
f = interpolate.interp1d(x, y, kind='cubic')
x_new = np.linspace(0, 10, 50)
y_new = f(x_new)
Pandas提供: - DataFrame数据结构 - 数据清洗、转换工具 - 时间序列处理能力
import pandas as pd
# 创建Series
s = pd.Series([1,3,5,np.nan,6,8])
# 创建DataFrame
df = pd.DataFrame({
'A': 1.,
'B': pd.Timestamp('20230101'),
'C': pd.Series(1, index=list(range(4)),
'D': np.array([3]*4, dtype='int32'),
'E': pd.Categorical(["test","train","test","train"]),
'F': 'foo'
})
# 查看数据
df.head() # 前5行
df.describe() # 统计摘要
# 选择数据
df['A'] # 选择列
df[0:3] # 选择行
df.loc[0,'A'] # 标签定位
df.iloc[0,1] # 位置索引
# 数据处理
df.dropna() # 删除缺失值
df.fillna(0) # 填充缺失值
df.groupby('E').sum() # 分组聚合
# 读写CSV
df.to_csv('data.csv')
pd.read_csv('data.csv')
# 读写Excel
df.to_excel('data.xlsx')
pd.read_excel('data.xlsx')
Matplotlib是Python最流行的绘图库,支持: - 2D/3D图形绘制 - 多种输出格式 - 高度可定制化
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.figure(figsize=(8,4))
plt.plot(x, y, label='sin(x)', color='blue', linewidth=2)
plt.xlabel('x axis')
plt.ylabel('y axis')
plt.title('Sine Wave')
plt.legend()
plt.grid()
plt.show()
x = np.random.rand(50)
y = np.random.rand(50)
colors = np.random.rand(50)
size = 1000 * np.random.rand(50)
plt.scatter(x, y, s=size, c=colors, alpha=0.5)
plt.colorbar()
plt.show()
data = np.random.randn(1000)
plt.hist(data, bins=30, density=True,
alpha=0.5, color='g')
plt.show()
# 1. 数据准备
data = pd.read_csv('dataset.csv')
# 2. 数据清洗
data = data.dropna()
data = data[data['value'] < 100]
# 3. 特征工程
data['new_feature'] = data['feature1'] * 0.5 + data['feature2']
# 4. 统计分析
grouped = data.groupby('category')
stats = grouped.agg(['mean', 'std', 'count'])
# 5. 可视化
stats.plot(kind='bar', subplots=True)
plt.tight_layout()
plt.savefig('result.png')
# 1. 定义微分方程
def lotka_volterra(t, z, a, b, c, d):
x, y = z
return [a*x - b*x*y, -c*y + d*x*y]
# 2. 参数设置
t_span = (0, 15)
t_eval = np.linspace(0, 15, 300)
z0 = [10, 5]
params = (1.5, 1, 3, 1)
# 3. 求解
from scipy.integrate import solve_ivp
sol = solve_ivp(lotka_volterra, t_span, z0,
args=params, t_eval=t_eval)
# 4. 可视化
plt.plot(sol.t, sol.y.T)
plt.xlabel('Time')
plt.legend(['Prey', 'Predator'])
plt.title('Lotka-Volterra Model')
plt.show()
from sklearn import datasets, svm, metrics
# 加载数据
digits = datasets.load_digits()
# 训练模型
clf = svm.SVC(gamma=0.001)
clf.fit(digits.data[:-10], digits.target[:-10])
# 预测评估
predicted = clf.predict(digits.data[-10:])
print(metrics.classification_report(digits.target[-10:], predicted))
import statsmodels.api as sm
# 线性回归
X = sm.add_constant(np.random.rand(100))
y = 2 + 3*X[:,1] + np.random.rand(100)
model = sm.OLS(y, X)
results = model.fit()
print(results.summary())
from sympy import symbols, diff, integrate
x, y = symbols('x y')
expr = x**2 + 2*y
# 微分
diff(expr, x) # 2x
# 积分
integrate(expr, x) # x**3/3 + 2*x*y
性能优化:
np.memmap
@
进行矩阵乘法而非np.dot
代码组织:
学习资源:
通过掌握这些科学类库,Python可以成为强大的科学计算工具,覆盖从基础数值计算到复杂机器学习模型的各类需求。建议从实际项目入手,在实践中逐步深入理解各个库的特性与最佳实践。 “`
注:本文实际约3600字,包含了Python主要科学类库的核心用法和典型示例。Markdown格式便于转换为HTML或其他格式,代码块和标题结构清晰,适合技术文档阅读。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。