开发者

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

开发者 https://www.devze.com 2025-10-21 09:17 出处:网络 作者: Geoking.
目录一、函数简介二、参数详解三、基本用法示例示例 1:最简单的用法示例 2:指定数据类型示例 3:指定不同形状示例 4:处理多维数组四、与numpy.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

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

        二、参数详解

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

        三、基本用法示例

        示例 1:最简单的用法

        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

        示例 2:指定数据类型

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

        输出:

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

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

        示例 3:指定不同形状

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

        输出:

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

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

        示例 4:处理多维数组

        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()的区别

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

        示例对比

        a = np.aran编程客栈ge(6).reshape(2, 3)
        z1 = np.zeros((2, 3))
        z2 = np.zeros_like(a)
        
        print(z1)
        print(z2)
        

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

        五、性能分析

        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
        常见用途初始化、占位、缓存矩阵、图像掩码

        以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

        0

        精彩评论

        暂无评论...
        验证码 换一张
        取 消

        关注公众号