NumPy 概述
学习目标
- 了解 NumPy 是什么以及它在 Python 生态中的地位
- 理解 ndarray 和 Python list 的区别
- 安装 NumPy 并运行第一段代码
- 直观感受 NumPy 的性能优势
NumPy 是什么?
NumPy(Numerical Python)是 Python 中用于科学计算的核心库。如果说 Python 是一辆汽车,那 NumPy 就是它的引擎——几乎所有数据科学和 AI 相关 的库都建立在 NumPy 之上。
简单来说:学数据分析和 AI,NumPy 是绕不开的第一站。
为什么需要 NumPy?
在第 1 章的预热练习中,我们用纯 Python 处理数据,遇到了很多痛点。那 NumPy 能帮我们解决什么问题呢?
Python 列表的局限
回忆一下,如果我们想把一组数字都乘以 2:
# 纯 Python:需要写循环
numbers = [1, 2, 3, 4, 5]
result = []
for n in numbers:
result.append(n * 2)
print(result) # [2, 4, 6, 8, 10]
# 或者用列表推导式
result = [n * 2 for n in numbers]
如果想计算两组数据对应位置的和:
a = [1, 2, 3, 4, 5]
b = [10, 20, 30, 40, 50]
result = [a[i] + b[i] for i in range(len(a))]
print(result) # [11, 22, 33, 44, 55]
这些操作很常见,但每次都要写循环,既麻烦又慢。
NumPy 的解决方案
import numpy as np
# NumPy:直接对整个数组操作,不用循环!
numbers = np.array([1, 2, 3, 4, 5])
result = numbers * 2
print(result) # [ 2 4 6 8 10]
# 两组数据相加
a = np.array([1, 2, 3, 4, 5])
b = np.array([10, 20, 30, 40, 50])
result = a + b
print(result) # [11 22 33 44 55]
不用循环,一行搞定! 这就是 NumPy 的核心能力——向量化运算。
安装 NumPy
如果你用 Miniconda / Anaconda,NumPy 通常已经预装了。如果没有:
# 用 pip 安装
pip install numpy
# 或用 conda 安装
conda install numpy
验证安装:
import numpy as np
print(np.__version__) # 如 1.26.4
print("NumPy 安装成功!")
import 别名
import numpy as np 是约定俗成的写法。在整个数据科学社区中,几乎所有人都把 NumPy 简写为 np。后面我们也统一用 np。
ndarray vs Python list
NumPy 的核心是 ndarray(N-dimensional array,N 维数组)。它和 Python 的 list 有什么区别?
外观对比
import numpy as np
# Python list
py_list = [1, 2, 3, 4, 5]
print(type(py_list)) # <class 'list'>
print(py_list) # [1, 2, 3, 4, 5]
# NumPy ndarray
np_array = np.array([1, 2, 3, 4, 5])
print(type(np_array)) # <class 'numpy.ndarray'>
print(np_array) # [1 2 3 4 5] ← 注意:没有逗号!
核心区别
| 特性 | Python list | NumPy ndarray |
|---|---|---|
| 数据类型 | 可以混装(整数、字符串、对象混在一起) | 所有元素必须是同一类型 |
| 运算方式 | 需要循环逐个处理 | 支持向量化运算,整体操作 |
| 内存布局 | 元素分散存储 | 元素连续存储,更紧凑 |
| 运算速度 | 慢(Python 解释器逐个处理) | 快(底层用 C 语言优化) |
| 功能 | 通用容器 | 专为数值计算设计,自带大量数学函数 |