NumPy:Python 科学计算的基石
·
NumPy:Python 科学计算的基石
numpy 在 GitHub 上有 32,177 颗星。
对于一个"底层基础设施"级别的库,这个数字背后是真实的大规模使用。Python 科学计算、数据分析、机器学习这三条路,往底层挖,大概率都会碰到 NumPy。
1、 它解决什么问题
Python 原生的列表操作慢,做矩阵运算更慢。一个 1000x1000 的矩阵乘法,纯 Python 循环写法可能要跑几分钟,NumPy 几毫秒搞定。
NumPy 用 C 语言实现了核心计算逻辑,外面包一层 Python 接口。你写的是 Python 代码,跑的是 C 的速度。数据在内存里连续存储,CPU 缓存命中率高,向量化指令能直接用上。
核心能力:
- ndarray:N 维数组对象,支持任意维度和形状
- 广播机制(broadcasting):不同形状的数组自动对齐运算
- 线性代数、傅里叶变换、随机数生成
- C/C++ 和 Fortran 代码的调用接口

2、 基础用法
安装:
pip install numpy
创建数组和基本运算:
import numpy as np
a = np.array([1, 2, 3, 4, 5])
b = np.array([6, 7, 8, 9, 10])
print(a + b) # [ 7 9 11 13 15]
print(a * b) # [ 6 14 24 36 50]
print(a ** 2) # [ 1 4 9 16 25]
矩阵乘法:
m1 = np.array([[1, 2], [3, 4]])
m2 = np.array([[5, 6], [7, 8]])
print(m1 @ m2)
数组切片和索引:
arr = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
print(arr[0, :]) # [1 2 3] 第一行
print(arr[:, 1]) # [2 5 8] 第二列
print(arr[1:, 0:2]) # [[4 5] [7 8]] 子矩阵
广播机制省去了大量手动循环。一个二维数组的每一行加同一个向量,NumPy 自动把向量广播到每一行:
a = np.array([[1, 2, 3],
[4, 5, 6]])
b = np.array([10, 20, 30])
print(a + b)
# [[11 22 33]
# [14 25 36]]
3、 生态位
NumPy 不是一个独立工具,它是整个 Python 科学计算栈的地基。
pandas 的 DataFrame 底层是 NumPy 数组。scikit-learn 的算法接口接受 NumPy 数组作为输入。matplotlib 画图的数据源是 NumPy 数组。TensorFlow 和 PyTorch 的张量操作和 NumPy 数组接口高度兼容。
去掉 NumPy,这些库的 API 和性能都会发生根本性变化。理解 NumPy 的数组模型,是理解上层库行为的前提。

4、 适合谁用
- 做数据分析、机器学习的 Python 开发者,这是绕不开的基础库
- 科研人员做数值模拟和数据处理
- 需要高性能数组运算的场景,图像处理、信号处理都算
- 学 Python 数据科学的新手,NumPy 是路线图的第一站
这是绕不开的基础库
- 科研人员做数值模拟和数据处理
- 需要高性能数组运算的场景,图像处理、信号处理都算
- 学 Python 数据科学的新手,NumPy 是路线图的第一站
更多推荐
所有评论(0)