NumPy中zeros_like()函数的使用及说明

Written by

in

文章目录
  • numpy.zeros_like() 是 NumPy 提供的一个用于创建零数组的函数。 它根据给定的数组(或类数组对象)创建一个形状、类型相同的新数组,但所有元素都被初始化为 0。 numpy.zeros_like(a, dtype=None, order=’K’, subok=True, shape=None) 官方文档介绍地址numpy.zeros_like
  • 参数名 说明 默认值 a 用作模板的数组或类数组对象 必填 dtype 指定返回数组的数据类型 默认为 a的数据类型 order 内存布局方式:'C'(行优先)或 'F'(列优先) 'K'(保持与 a一致) subok 若为 True,则子类保持原类型;否则返回 np.ndarray True shape 可选,用于重新指定形状 None
  • 函数 创建方式 形状来源 常用场景 numpy.zeros(shape) 手动指定形状 由参数提供 创建全零数组 numpy.zeros_like(a) 基于参考数组 继承自数组 a 创建相同结构的零数组
  • import numpy as np import time a = np.random.rand(1000, 1000) # zeros start = time.time() z1 = np.zeros(a.shape) print(“zeros 耗时:”, time.time() – start) # zeros_like start = time.time() z2 = np.zeros_like(a) print(“zeros_like 耗时:”, time.time() – start) 两者性能非常接近,但 zeros_like() 避免了显式指定形状,代码更简洁、更可维护。
  • 矩阵运算初始化 result = np.zeros_like(matrix) 神经网络梯度缓存 grad_W = np.zeros_like(weights) 掩码操作或图像处理 mask = np.zeros_like(image, dtype=bool) 科学计算的占位符数组 temp = np.zeros_like(data, dtype=float)
  • 特性 zeros_like() 功能 创建一个与给定数组形状和类型相同的零数组 优点 简洁、安全、自动继承 dtype 与 shape 常见用途 初始化、占位、缓存矩阵、图像掩码 以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。 您可能感兴趣的文章: Python NumPy数组利器之np.zeros函数详解与应用实例 一文详细NumPy中np.zeros的使用 python中numpy.zeros(np.zeros)的使用方法
  • 目录
    • 一、函数简介
    • 二、参数详解
    • 三、基本用法示例
      • 示例 1:最简单的用法
      • 示例 2:指定数据类型
      • 示例 3:指定不同形状
      • 示例 4:处理多维数组
    • 四、与numpy.zeros()的区别
      • 示例对比
    • 五、性能分析
      • 六、实际应用场景
        • 七、总结

          在数据分析、机器学习与科学计算中经常需要创建一个与现有数组形状相同、但值全为零的新数组。

          这时,NumPy 提供了一个非常方便的函数 —— numpy.zeros_like()

          当想要一个“和现有数组一样大,但全是零”的数组时,记得用 zeros_like()

          本文将深入介绍它的用法、参数、应用场景以及与 numpy.zeros() 的区别。

          numpy.zeros_like() 是 NumPy 提供的一个用于创建零数组的函数。

          它根据给定的数组(或类数组对象)创建一个形状、类型相同的新数组,但所有元素都被初始化为 0

          numpy.zeros_like(a, dtype=None, order='K', subok=True, shape=None)
          

          官方文档介绍地址numpy.zeros_like

          参数名 说明 默认值
          a 用作模板的数组或类数组对象 必填
          dtype 指定返回数组的数据类型 默认为 a的数据类型
          order 内存布局方式:'C'(行优先)或 'F'(列优先) 'K'(保持与 a一致)
          subok 若为 True,则子类保持原类型;否则返回 np.ndarray True
          shape 可选,用于重新指定形状 None

          import numpy as np
          
          a = np.array([[1, 2, 3], [4, 5, 6]])
          b = np.zeros_like(a)
          
          print("原数组 a:n", a)
          print("zeros_like 生成的新数组 b:n", b)
          

          输出:

          原数组 a:
           [[1 2 3]
            [4 5 6]]
          zeros_like 生成的新数组 b:
           [[0 0 0]
            [0 0 0]]
          

          会发现:

          • ba 的形状完全一致
          • 元素类型(dtype)也相同
          • 所有元素都为 0

          b = np.zeros_like(a, dtype=float)
          print(b)
          

          输出:

          [[0. 0. 0.]
           [0. 0. 0.]]
          

          小技巧:当希望创建一个浮点型零矩阵(如在神经网络中初始化权重),可以通过 dtype=float 实现。

          b = np.zeros_like(a, shape=(3, 3))
          print(b)
          

          输出:

          [[0 0 0]
           [0 0 0]
           [0 0 0]]
          

          虽然参考了 a,但通过 shape 参数指定了一个新的形状 (3, 3)

          tensor = np.arange(24).reshape(2, 3, 4)
          zeros_tensor = np.zeros_like(tensor)
          
          print("原数组形状:", tensor.shape)
          print("zeros_like 结果形状:", zeros_tensor.shape)
          

          输出:

          原数组形状: (2, 3, 4)
          zeros_like 结果形状: (2, 3, 4)
          

          非常适合在深度学习中创建梯度矩阵缓存变量

          函数 创建方式 形状来源 常用场景
          numpy.zeros(shape) 手动指定形状 由参数提供 创建全零数组
          numpy.zeros_like(a) 基于参考数组 继承自数组 a 创建相同结构的零数组

          a = np.arange(6).reshape(2, 3)
          z1 = np.zeros((2, 3))
          z2 = np.zeros_like(a)
          
          print(z1)
          print(z2)
          

          输出结果相同,但 z2 的创建过程更简洁,更安全(不易出错)。

          import numpy as np
          import time
          
          a = np.random.rand(1000, 1000)
          
          # zeros
          start = time.time()
          z1 = np.zeros(a.shape)
          print("zeros 耗时:", time.time() - start)
          
          # zeros_like
          start = time.time()
          z2 = np.zeros_like(a)
          print("zeros_like 耗时:", time.time() - start)
          

          两者性能非常接近,但 zeros_like() 避免了显式指定形状,代码更简洁、更可维护。

          1. 矩阵运算初始化
          result = np.zeros_like(matrix)
          
          1. 神经网络梯度缓存
          grad_W = np.zeros_like(weights)
          
          1. 掩码操作或图像处理
          mask = np.zeros_like(image, dtype=bool)
          
          1. 科学计算的占位符数组
          temp = np.zeros_like(data, dtype=float)
          

          特性 zeros_like()
          功能 创建一个与给定数组形状和类型相同的零数组
          优点 简洁、安全、自动继承 dtype 与 shape
          常见用途 初始化、占位、缓存矩阵、图像掩码

          以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。

          您可能感兴趣的文章:

          • Python NumPy数组利器之np.zeros函数详解与应用实例
          • 一文详细NumPy中np.zeros的使用
          • python中numpy.zeros(np.zeros)的使用方法

          站内搜索