从 NumPy 到 Scikit-learn:一文看懂 Python 数据科学的“黄金四角”

0 阅读3分钟

在 Python 的数据科学版图中,有四个库被称为“基石”:NumPyPandasSciPyScikit-learn

很多初学者甚至部分开发者,常常会混淆它们的功能边界:为什么有了 NumPy 还要 Pandas?SciPy 和 NumPy 又有什么区别?今天我们就来深度复盘这“黄金四角”的来源、分工与核心用法。


一、 核心族谱:谁是谁的基石?

这四个库并非独立存在,而是一层层“套娃”构建起来的生态系统:

  1. NumPy:底层的数值计算引擎,提供高性能数组。
  2. SciPy:建立在 NumPy 之上,提供高级科学计算算法(如积分、优化)。
  3. Pandas:同样基于 NumPy,专门为“表格数据”量身打造。
  4. Scikit-learn:集大成者,调用 NumPy 和 SciPy 的能力实现机器学习算法。

二、 深度分工与代码实战

1. NumPy:高性能多维数组

定位:解决 Python 原生列表在处理大规模数值运算时“慢”的问题。

核心功能ndarray 对象、广播机制、线性代数基础。

Python

import numpy as np

# 创建一个 3x3 的矩阵
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 广播机制:所有元素直接乘以 2
print(matrix * 2) 

2. Pandas:数据清洗与分析的神器

定位:将复杂的矩阵运算包装成人类易读的“电子表格”。

核心功能:处理缺失值、分组聚合(GroupBy)、时间序列处理。

Python

import pandas as pd

# 创建 DataFrame(类似 Excel)
data = {'姓名': ['小明', '小红'], '成绩': [85, np.nan]}
df = pd.DataFrame(data)

# 填充缺失值并计算平均分
df['成绩'] = df['成绩'].fillna(0)
print(df['成绩'].mean())

3. SciPy:硬核科学计算算法

定位:如果你是工程师或科研人员,需要求积分、做滤波器或信号处理,找它就对了。

核心功能:数值积分、常微分方程求解、稀疏矩阵。

Python

from scipy import integrate

# 对函数 f(x) = x^2 在 0 到 1 之间求积分
result, error = integrate.quad(lambda x: x**2, 0, 1)
print(f"积分结果: {result}")

4. Scikit-learn:机器学习工业标准

定位:提供统一的接口(fit/predict),让你一行代码调用复杂的算法。

核心功能:分类(如随机森林)、回归、聚类(K-Means)、特征工程。

Python

from sklearn.linear_model import LinearRegression

# 简单的线性回归示例
model = LinearRegression()
X = [[1], [2], [3]] # 特征
y = [2, 4, 6]       # 标签
model.fit(X, y)
print(f"预测值: {model.predict([[4]])}") # 输出 8

三、 避坑指南:关于发音的“技术范儿”

在掘金写文章,专业性体现在细节上。关于这几个词的发音,建议遵循社区共识:

  • NumPy:读作 /ˈnʌmpaɪ/ (南-派)。千万别读成 "Num-pee",那听起来像是在说尿尿。
  • SciPy:标准读法是 /ˈsaɪpaɪ/ (赛-派)。虽然学术界也有人读作 "SIGH-pee",但为了和 Python 保持一致,读“派”永远不会错。
  • Scikit:读作 /ˈsaɪkɪt/ (赛-ki-特)。

四、 总结:如何选择?

  • 如果你要处理纯数学矩阵运算 -> NumPy
  • 如果你要处理表格、CSV、数据库数据 -> Pandas
  • 如果你要进行信号处理、复杂的微积分 -> SciPy
  • 如果你要做预测、分类、挖掘隐藏规律 -> Scikit-learn

掌握了这四个库,你就已经拿到了进入 Python 数据科学世界的通行证!