一、为什么我们需要 NumPy?
还记得第一次在 Python 里写一堆 for 循环的时候的感受吗?
一行行循环、一层层嵌套,看起来像炼丹。
# 把列表每个元素平方
data = [1, 2, 3, 4, 5]
result = []
for x in data:
result.append(x ** 2)
print(result)结果当然是 [1, 4, 9, 16, 25]。
但执行速度慢得让人想弃疗。
这时候登场的主角就是 NumPy(Numerical Python)
一个让你在 Python 里写出媲美 C 语言性能的科学计算库。
一个让你在 Python 里写出媲美 C 语言性能的科学计算库。
二、NumPy 的安装与导入
直接用 pip 安装就行:
pip install numpy安装好后,你一般都会用一个简称:
import numpy as np如果你看到别人写 np.array(),别慌,这只是大家约定俗成的简写。
三、创建数组的几种方式
NumPy 的核心是 ndarray(N 维数组)。
它像 Python 的列表,但更高效、更方便。
🧩 1. 从列表创建
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr)输出:
[1 2 3 4 5]注意到没?打印的时候没有逗号——这就是 NumPy 的“数组风格”。
🧮 2. 创建特殊数组
np.zeros((2, 3)) # 2x3 的全零矩阵
np.ones((3, 3)) # 全一矩阵
np.eye(3) # 单位矩阵
np.arange(0, 10, 2) # 等差数组 [0, 2, 4, 6, 8]
np.linspace(0, 1, 5) # 等分数组 [0., 0.25, 0.5, 0.75, 1.]这些函数会在之后的项目里频繁使用。
四、数组运算的魔法
还在写循环?别傻了。
NumPy 可以直接对数组进行“广播式运算”:
Python 原生写法
NumPy 写法
data = [1, 2, 3, 4, 5]
result = []
for x in data:
result.append(x * 2)
print(result)输出:
[2, 4, 6, 8, 10]import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr * 2)输出:
[2, 4, 6, 8, 10]是不是神清气爽?
向量化运算让你不写循环也能搞定所有数学操作。
五、索引与切片
NumPy 的索引比 Python list 强大得多:
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr[0, 1]) # 访问第1行第2列 -> 2
print(arr[:, 1]) # 所有行的第2列 -> [2 5]
print(arr[1, :]) # 第2行 -> [4 5 6]还可以用布尔索引:
arr[arr > 3]六、常用数学函数
NumPy 内置了几乎所有数学函数:
np.mean(arr) # 平均值
np.sum(arr) # 求和
np.max(arr) # 最大值
np.min(arr) # 最小值
np.std(arr) # 标准差七、数组形状与维度
arr = np.array([[1,2,3], [4,5,6]])
arr.shape # (2, 3)
arr.ndim # 维度数 -> 2
arr.size # 元素总数 -> 6改变形状也很方便:
arr.reshape(3, 2)⚠️ 注意:reshape 不会修改原数组,而是返回一个新数组。八、小结
| 知识点 | 说明 |
|---|---|
np.array() | 创建数组 |
np.zeros()/np.ones() | 创建特殊矩阵 |
arr.shape/arr.ndim | 查看形状与维度 |
arr * 2/arr + arr | 向量化运算 |
arr[arr > 3] | 布尔筛选 |
下一篇我们将深入 NumPy 的“隐藏魔法”——广播机制、内存布局与性能优化。
别眨眼,数组还能比你想的更聪明。
别眨眼,数组还能比你想的更聪明。
🏁 系列目录
- ✅ NumPy 入门:别再用 for 循环折磨自己了
- ✅ NumPy 进阶:搞懂广播机制,才能真正玩转数组
- 🔜 NumPy 实战:用数组玩转图像与数据分析
Caleb https://reinness.com/posts/293 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自小陈博客 !