一、核心功能
np.ones 是 NumPy 中用于创建指定形状全1数组的基础函数,语法结构为:
numpy.ones(shape, dtype=None, order='C', *, like=None)
-
核心价值:提供标准化的数组初始化方式,避免手动填充1值的繁琐操作,广泛用于数值计算、矩阵运算和数据预处理场景。
二、参数详解
| 参数名 |
类型 |
作用 |
典型取值 |
| shape |
整数/元组 |
定义数组维度 |
5(1D)、(3,4)(2D)、(2,2,3)(3D) |
| dtype |
数据类型 |
指定元素类型 |
np.int32、np.float64(默认) |
| order |
{'C','F'} |
内存存储顺序 |
'C'(行优先)、'F'(列优先) |
| 存储方式 |
顺序规则 |
适用场景 |
典型语言 |
| 'C' |
行优先 |
按行遍历操作 |
C/Python |
| 'F' |
列优先 |
按列计算(如矩阵运算) |
Fortran/Matlab |
三、基础应用示例
import numpy as np
# 1. 创建1维数组
arr1d = np.ones(5) # array([1., 1., 1., 1., 1.])
# 2. 创建2维矩阵
arr2d = np.ones((2, 3), dtype=int) # array([[1, 1, 1], [1, 1, 1]])
# 3. 创建3维张量
arr3d = np.ones((2, 2, 2), dtype=np.float32)
四、高级应用场景
-
权重矩阵初始化
在机器学习中初始化神经元连接权重:
input_size = 100
hidden_size = 50
weights = np.ones((input_size, hidden_size)) * 0.01 # 小值初始化
-
掩码数组创建
用于数据筛选或遮罩操作:
data = np.array([1, 3, 5, 7, 9])
mask = np.ones(5, dtype=bool)
mask[[1, 3]] = False # array([ True, False, True, False, True])
filtered = data[mask] # array([1, 5, 9])
- 与其他函数组合运算
# 创建单位矩阵(等价于np.eye(3))
identity = np.ones((3, 3)) * np.eye(3)
# 生成指定范围的等差数列
start, 终止 = 2, 10
steps = np.ones(5) * np.linspace(start, 终止, 5)
五、性能对比
| 初始化方式 |
耗时(1000x1000数组) |
内存占用 |
| np.ones |
1.2ms |
8MB |
| 列表推导式 |
28.5ms |
16MB |
六、常见误区规避
-
类型混淆:默认返回浮点型数组,需显式指定
dtype=int获取整数数组
-
形状错误:多维数组需传入元组,如
(2,3)而非2,3
-
内存效率:创建大型数组时,可使用
order='F'优化列优先访问性能