
本文介绍使用 `np.full()` 函数高效生成全为指定值(例如 2)的 numpy 数组,替代先创建再替换的低效方式,并提供形状控制、数据类型设置等实用技巧。
在 NumPy 中,虽然 np.zeros() 和 np.ones() 是创建常量数组的常用函数,但若需生成其他固定值(如全 2 数组),最直接、高效的方式是使用 np.full() —— 它专为“填充指定值”而设计,语法简洁且语义清晰。
np.full() 的基本用法如下:
import numpy as np # 创建长度为 20 的一维全 2 数组,再重塑为 4×5 二维数组 arr = np.full(20, 2, dtype=int).reshape(4, 5) print(arr)
输出:
[[2 2 2 2 2] [2 2 2 2 2] [2 2 2 2 2] [2 2 2 2 2]]
你也可以直接指定目标形状,避免链式调用 .reshape():
arr = np.full((4, 5), 2, dtype=int) # 推荐:更直观、更高效
✅ 优势说明:
- 比 np.ones(...) * 2 或 np.zeros(...) + 2 更语义明确、内存友好;
- 比先创建再赋值(如 a[:] = 2)更简洁,尤其适合初始化场景;
- 支持任意维度、任意 dtype(如 float32、bool 等),并可指定 order 参数控制内存布局。
⚠️ 注意事项:
- 若未显式指定 dtype,np.full() 会根据 fill_value 自动推断(如 2 → int64,2.0 → float64),建议显式声明以确保类型可控;
- 对于大型数组,np.full() 是零拷贝优化的,性能优于先生成再广播运算的方式。
总结:当需要构建全为某固定值(如 2)的数组时,请优先选用 np.full(shape, fill_value, dtype=...) —— 它是 NumPy 官方推荐的标准做法,兼具可读性、效率与灵活性。










