2024年最常用的Python库和工具

科技   2024-12-29 18:51   河南  

核心基础库

  1. NumPy
  • 科学计算的基础库
  • 提供多维数组对象和各种派生对象
  • 具有高效的数组运算能力
  • 提供大量的数学函数库
  • 是其他科学计算库的基础依赖

示例代码:

import numpy as np

# 创建数组
arr = np.array([12345])
matrix = np.array([[123], [456]])

# 基本运算
print(arr * 2)  # [2 4 6 8 10]
print(matrix.shape)  # (2, 3)

# 数学运算
print(np.mean(arr))  # 3.0
print(np.sum(matrix))  # 21
  1. Pandas
  • 强大的数据分析和处理工具
  • 提供 DataFrame 和 Series 等数据结构
  • 擅长处理表格和时间序列数据
  • 具有强大的数据清洗、转换和分析功能
  • 支持多种文件格式的读写 (CSV、Excel 等)

示例代码:

import pandas as pd

# 创建 DataFrame
df = pd.DataFrame({
    '姓名': ['张三''李四''王五'],
    '年龄': [253035],
    '城市': ['北京''上海''广州']
})

# 基本操作
print(df.head())
print(df['年龄'].mean())  # 30.0

# 数据筛选
print(df[df['年龄'] > 30])
  1. Matplotlib
  • Python 最著名的绘图库
  • 提供类似 MATLAB 的绘图 API
  • 支持各种 2D 和基础 3D 图表
  • 可以生成出版质量的图表
  • 高度可定制化

示例代码:

import matplotlib.pyplot as plt
import numpy as np

# 创建简单折线图
x = np.linspace(010100)
y = np.sin(x)
plt.plot(x, y)
plt.title('正弦波')
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.grid(True)
plt.show()

科学计算扩展库

  1. SciPy
  • 建立在 NumPy 基础上的科学计算工具集
  • 提供优化、线性代数、积分、插值等功能
  • 包含大量科学工程计算相关的子模块
  • 适用于科研和工程领域

示例代码:

from scipy import optimize
import numpy as np

# 定义要优化的函数
def f(x):
    return (x[0] - 1)**2 + (x[1] - 2)**2

# 最小化函数
result = optimize.minimize(f, [00])
print(result.x)  # [1. 2.]
  1. SymPy
  • 符号计算库
  • 支持代数运算、微积分、方程求解
  • 可以进行数学表达式的符号推导
  • 适合数学教育和理论研究

示例代码:

from sympy import symbols, solve, diff

# 定义符号变量
x, y = symbols('x y')

# 解方程
expr = x**2 - 4
solution = solve(expr, x)
print(solution)  # [-2, 2]

# 求导
derivative = diff(x**3 + x**2, x)
print(derivative)  # 3*x**2 + 2*x

统计和机器学习

  1. PyMC
  • 概率编程库
  • 专注于贝叶斯统计建模
  • 支持 MCMC 等采样方法
  • 适合统计推断和不确定性建模

示例代码:

import pymc as pm
import numpy as np

# 简单的贝叶斯模型
with pm.Model() as model:
    # 先验分布
    mu = pm.Normal('mu', mu=0, sigma=1)
    # 似然函数
    obs = pm.Normal('obs', mu=mu, sigma=1, observed=np.random.randn(100))
    # 进行推断
    trace = pm.sample(1000)
  1. Stan
  • 统计建模和高性能统计计算平台
  • 支持贝叶斯推断
  • 具有自己的概率编程语言
  • 广泛应用于统计研究和数据科学

示例代码:

import cmdstanpy

# Stan 模型代码
stan_code = """
data {
  int<lower=0> N;
  vector[N] y;
}
parameters {
  real mu;
  real<lower=0> sigma;
}
model {
  y ~ normal(mu, sigma);
}
"""


# 编译和运行模型
model = cmdstanpy.CmdStanModel(model_code=stan_code)

特定领域工具

  1. Astropy
  • 天文学专用工具库
  • 提供天文数据处理和分析功能
  • 包含天文坐标系统、时间处理等专业功能

示例代码:

from astropy.coordinates import SkyCoord
import astropy.units as u

# 创建天体坐标
coord = SkyCoord(ra=10.68458*u.degree, dec=41.26917*u.degree, frame='icrs')
print(coord.to_string('hmsdms'))

# 坐标转换
galactic = coord.galactic
print(f"银道坐标: {galactic.l.deg:.2f}°, {galactic.b.deg:.2f}°")
  1. Econ-ARK
  • 经济学建模工具集
  • 专注于异质主体建模
  • 适用于经济学研究和政策分析

示例代码:

from HARK.ConsumptionSaving.ConsIndShockModel import IndShockConsumerType

# 创建消费者模型
consumer = IndShockConsumerType()
# 解决消费者问题
consumer.solve()
# 模拟消费者行为
consumer.simulate()

交互式计算环境

  1. IPython/Jupyter
  • 交互式 Python 计算环境
  • 支持代码、文档和可视化的混合展示
  • 广泛用于数据分析和教学

示例代码:

# 在 Jupyter Notebook 中运行
from IPython.display import display, Math, Latex

# 显示数学公式
display(Math(r'F(k) = \int_{-\infty}^{\infty} f(x) e^{2\pi i k x} dx'))

# 魔法命令
%time range(1000000)  # 测量代码执行时间
  1. nteract
  • 现代化的交互式计算环境
  • 提供桌面应用程序界面
  • 支持实时代码执行和数据可视化

示例代码:

# nteract 中的数据可视化
import altair as alt
import pandas as pd

data = pd.DataFrame({
    'x': range(10),
    'y': [i**2 for i in range(10)]
})

chart = alt.Chart(data).mark_line().encode(
    x='x',
    y='y'
)
chart

其他专业工具

  1. Julia
  • 虽然不是 Python 库,但是一个重要的科学计算编程语言
  • 具有接近 C 的性能
  • 特别适合数值计算和科学计算

示例代码:

# Julia 代码示例
function mandelbrot(h, w)
    return [escape_time(complex(2*x/w-1.52*y/h-1)) for y in 1:h, x in 1:w]
end

function escape_time(c, maxiter=100)
    z = 0
    for n = 1:maxiter
        if abs(z) > 2
            return n
        end
        z = z^2 + c
    end
    return maxiter
end
  1. PyTables
  • 用于管理大型数据集
  • 基于 HDF5 文件格式
  • 高效处理大规模科学数据

示例代码:

import tables as tb
import numpy as np

# 创建 HDF5 文件
class Particle(tb.IsDescription):
    name = tb.StringCol(16)
    position = tb.Float64Col(shape=(3,))
    velocity = tb.Float64Col(shape=(3,))

with tb.open_file('particles.h5''w'as h5file:
    table = h5file.create_table('/''particles', Particle)
    particle = table.row
    
    # 写入数据
    for i in range(10):
        particle['name'] = f'particle_{i}'
        particle['position'] = np.random.random(3)
        particle['velocity'] = np.random.random(3)
        particle.append()
  1. yt
  • 科学数据分析和可视化工具
  • 特别适合物理模拟数据
  • 支持多维数据分析

示例代码:

import yt
import numpy as np

# 创建示例数据
data = dict(density = (np.random.random((128128128)), "g/cm**3"),
           temperature = (np.random.random((128128128)), "K"))

# 创建数据集
ds = yt.load_uniform_grid(data, data["density"][0].shape)

# 创建切片图
slc = yt.SlicePlot(ds, "z", ["density""temperature"])
slc.save()


机器学习算法与Python实战
长期跟踪关注统计学、数据挖掘、机器学习算法、深度学习、人工智能技术与行业发展动态,分享Python、机器学习等技术文章。回复机器学习有惊喜资料。
 最新文章