NumPy zeros()函数使用小结

NumPy zeros() 函数使用小结

numpy.zeros() 是 NumPy 中用于创建全零数组的基础函数,广泛应用于初始化数组、占位、矩阵运算等场景。本文将从语法、参数、返回值、示例、注意事项等方面系统总结其用法。

图片[1]_NumPy zeros()函数使用小结_知途无界

一、函数语法

numpy.zeros(shape, dtype=float, order='C')

二、参数详解

参数说明
shape数组形状,可为整数​(1维)或元组​(多维)。例如:5(1维)、(2,3)(2行3列)。
dtype可选,指定数组元素的数据类型(如 intfloatbool 等)。默认 float64(或 float32,取决于系统)。
order可选,指定数组在内存中的存储顺序:
'C':按行优先(C风格,默认);
'F':按列优先(Fortran风格)。

三、返回值

返回一个指定形状、数据类型为 dtype 的全零数组(ndarray 对象)。

四、使用示例

1. 创建1维全零数组

shape 为整数时,创建1维数组(向量)。

import numpy as np

# 创建长度为5的1维全零数组(默认float64)
arr1 = np.zeros(5)
print(arr1)  # [0. 0. 0. 0. 0.]

# 指定数据类型为int32
arr2 = np.zeros(5, dtype=np.int32)
print(arr2)  # [0 0 0 0 0]
print(arr2.dtype)  # int32

2. 创建多维全零数组

shape 为元组时,创建多维数组(矩阵、张量等)。

# 创建2行3列的2维全零数组(默认float64)
arr3 = np.zeros((2, 3))
print(arr3)
# [[0. 0. 0.]
#  [0. 0. 0.]]

# 创建3维数组(2层、2行、3列)
arr4 = np.zeros((2, 2, 3))
print(arr4.shape)  # (2, 2, 3),表示2个2×3的矩阵

3. 指定数据类型(dtype)​

通过 dtype 参数控制元素类型,常见类型包括:

  • 整数:np.int8np.int16np.int32np.int64
  • 浮点数:np.float32np.float64(默认)
  • 布尔值:np.bool_True/False
  • 复数:np.complex64np.complex128
# 布尔型全零数组(元素为False)
bool_arr = np.zeros((2, 2), dtype=np.bool_)
print(bool_arr)
# [[False False]
#  [False False]]

# 复数型全零数组(实部虚部均为0)
complex_arr = np.zeros(3, dtype=np.complex128)
print(complex_arr)  # [0.+0.j 0.+0.j 0.+0.j]

4. 指定存储顺序(order)​

order='C'(行优先)和 order='F'(列优先)影响数组在内存中的存储方式,对大多数场景无感知,仅在需要与C/Fortran代码交互时需关注。

# 行优先(C风格):内存中按行连续存储
c_order = np.zeros((2, 3), order='C')
print(c_order)
# [[0. 0. 0.]
#  [0. 0. 0.]]

# 列优先(Fortran风格):内存中按列连续存储
f_order = np.zeros((2, 3), order='F')
print(f_order)
# [[0. 0. 0.]
#  [0. 0. 0.]]  # 数值上无差异,但内存布局不同

五、常见问题与注意事项

1. shape 参数的合法性

shape 必须是整数或整数元组,否则报错。例如:

np.zeros(5.5)       # 报错:TypeError(shape必须为整数)
np.zeros((2, '3'))  # 报错:TypeError(元组元素必须为整数)

2. 与 zeros_like() 的区别

  • np.zeros(shape):根据指定形状创建全零数组。
  • np.zeros_like(arr):根据已有数组 arr 的形状和数据类型创建全零数组。
arr = np.array([[1, 2], [3, 4]])
zeros_like_arr = np.zeros_like(arr)
print(zeros_like_arr)
# [[0 0]
#  [0 0]]
print(zeros_like_arr.dtype)  # int64(与arr一致)

3. 空数组 vs 全零数组

  • np.zeros():创建元素全为0的数组(内存中分配空间并初始化)。
  • np.empty():创建未初始化的数组(元素值为内存残留,速度快但不确定)。
empty_arr = np.empty((2, 2))  # 未初始化,值随机
print(empty_arr)  # 示例输出:[[1.2e-312 0.0e+000] [0.0e+000 0.0e+000]](值不确定)

4. 性能提示

  • 若仅需占位且不关心初始值,优先用 np.empty()(避免初始化开销)。
  • 若需明确初始值为0(如矩阵运算的初始状态),用 np.zeros()

六、典型应用场景

  1. 初始化数组​:为后续赋值预留空间(如动态规划中的DP表)。 dp = np.zeros((n, n), dtype=int) # 初始化DP表
  2. 占位符​:在算法中临时存储中间结果(如梯度累加)。
  3. 矩阵运算​:创建单位矩阵的辅助数组(结合其他操作)。
  4. 数据预处理​:初始化特征矩阵或标签数组。

总结

numpy.zeros() 是创建全零数组的高效工具,核心参数为 shape(形状)、dtype(数据类型)和 order(存储顺序)。掌握其用法可提升数组初始化效率,尤其在科学计算和数据处理中不可或缺。实际使用时需注意参数合法性,并根据场景选择是否指定数据类型或存储顺序。

© 版权声明
THE END
喜欢就点个赞,支持一下吧!
点赞40 分享
评论 抢沙发
头像
欢迎您留下评论!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容