NumPy 入门:别再用 for 循环折磨自己了

2025-10-24T14:36:00

一、为什么我们需要 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]
但执行速度慢得让人想弃疗。

[hint info]
这时候登场的主角就是 NumPy(Numerical Python)
一个让你在 Python 里写出媲美 C 语言性能的科学计算库。[/hint]

二、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 可以直接对数组进行“广播式运算”:

[tabs]

[tab title="Python 原生写法"]

data = [1, 2, 3, 4, 5]
result = []
for x in data:
    result.append(x * 2)
print(result)

输出:

[2, 4, 6, 8, 10]

[/tab]

[tab title="NumPy 写法"]

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
print(arr * 2)

输出:

[2, 4, 6, 8, 10]

[/tab]

[/tabs]

是不是神清气爽?
向量化运算让你不写循环也能搞定所有数学操作。

五、索引与切片

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]布尔筛选

[hint tip]
下一篇我们将深入 NumPy 的“隐藏魔法”——广播机制、内存布局与性能优化。
别眨眼,数组还能比你想的更聪明。
[/hint]

🏁 系列目录

  1. NumPy 入门:别再用 for 循环折磨自己了
  2. NumPy 进阶:搞懂广播机制,才能真正玩转数组
  3. 🔜 NumPy 实战:用数组玩转图像与数据分析
当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »