欢迎光临本地信息咨询网
详情描述

NumPy 的 zeros() 函数用于创建指定形状和数据类型、元素全为 0 的数组。以下是详细的使用总结:

1. 基本语法

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

2. 主要参数

shape

  • 数组的形状,可以是整数或整数元组
  • 示例
    np.zeros(5)            # 一维数组,5个元素
    np.zeros((2, 3))       # 2行3列的二维数组
    np.zeros((2, 3, 4))    # 三维数组

dtype

  • 数据类型,默认为 float64
  • 常用类型
    np.zeros(5, dtype=int)      # 整型数组
    np.zeros(3, dtype=complex)  # 复数数组
    np.zeros(2, dtype=bool)     # 布尔数组(全为False)

order

  • 内存存储顺序:
    • 'C':C风格,行优先(默认)
    • 'F':Fortran风格,列优先
      np.zeros((2,3), order='C')  # 行优先存储
      np.zeros((2,3), order='F')  # 列优先存储

like

  • 参考另一个数组对象创建具有相同属性的数组(NumPy 1.20+)
    template = np.array([[1, 2], [3, 4]])
    arr = np.zeros((2,2), like=template)  # 继承template的dtype和order

3. 实用示例

创建不同形状的零数组

import numpy as np

# 一维
arr1 = np.zeros(5)  # [0., 0., 0., 0., 0.]

# 二维(矩阵)
arr2 = np.zeros((3, 4))
# [[0., 0., 0., 0.],
#  [0., 0., 0., 0.],
#  [0., 0., 0., 0.]]

# 三维
arr3 = np.zeros((2, 2, 3))

指定数据类型

# 整数零数组
int_zeros = np.zeros(3, dtype=np.int32)  # [0, 0, 0]

# 复数零数组
complex_zeros = np.zeros(2, dtype=complex)  # [0.+0.j, 0.+0.j]

# 布尔零数组(全False)
bool_zeros = np.zeros(3, dtype=bool)  # [False, False, False]

创建结构化数组

# 创建带有字段名的结构化零数组
dt = np.dtype([('x', 'f4'), ('y', 'f4'), ('z', 'f4')])
struct_zeros = np.zeros(3, dtype=dt)
# [(0., 0., 0.), (0., 0., 0.), (0., 0., 0.)]

4. 实际应用场景

初始化权重矩阵

weights = np.zeros((10, 5))  # 神经网络权重初始化

创建掩码/模板

mask = np.zeros((100, 100), dtype=bool)  # 全False的掩码
mask[10:20, 30:40] = True               # 设置特定区域为True

占位数组

# 预先分配内存空间,稍后填充数据
result = np.zeros((1000, 1000))
# ... 后续计算填充数据

基准测试

# 测试数组操作性能
arr = np.zeros((1000, 1000))
%timeit arr + 1  # 测试加法运算时间

5. 与其他创建函数对比

函数 用途 特点
zeros() 创建全0数组 元素为0
ones() 创建全1数组 元素为1
empty() 创建未初始化数组 最快,内容随机
full() 创建填充指定值的数组 可指定任意填充值

6. 注意事项

内存效率zeros()empty() + 赋值慢,但能确保数据确定性 默认类型:默认 float64,可能占用较大内存,可根据需要调整 多维形状:传递元组 (a, b, c) 而不是多个参数 zeros_like() 区别
arr = np.array([[1, 2], [3, 4]])
# zeros 需要指定形状
z1 = np.zeros(arr.shape, dtype=arr.dtype)
# zeros_like 自动复制形状和类型
z2 = np.zeros_like(arr)

7. 性能提示

  • 对于大型数组,考虑使用 dtype=np.float32 减少内存占用
  • 如果不需要立即使用0值,np.empty() 可能更快
  • 使用 order='F' 可能在某些运算中提高性能(尤其是Fortran风格的算法)

这个函数在机器学习和科学计算中非常常用,特别是在需要初始化参数或创建基准数组时。

相关帖子
针对长途骑行者,绿道驿站是否可能提供临时休息或短时租赁服务?
针对长途骑行者,绿道驿站是否可能提供临时休息或短时租赁服务?
爸爸在申请和休陪产假期间,工资和奖金是如何进行计算和发放的?
爸爸在申请和休陪产假期间,工资和奖金是如何进行计算和发放的?
年度报销额度计算:2026年定点机构消费如何规划划算?
年度报销额度计算:2026年定点机构消费如何规划划算?
2026年享受免征购置税的新能源汽车,后续出售时是否会有特殊规定?
2026年享受免征购置税的新能源汽车,后续出售时是否会有特殊规定?
物业管理公司在高空抛物事件中,通常需要承担哪些管理责任?
物业管理公司在高空抛物事件中,通常需要承担哪些管理责任?
咸宁市专业网站开发建设&精准获客,多年专业建站经验
咸宁市专业网站开发建设&精准获客,多年专业建站经验
扬州市救护车转院转运回家&长途跨省救护车转运24小时电话
扬州市救护车转院转运回家&长途跨省救护车转运24小时电话
高效管理你的Linux系统: Debian操作系统常用命令指南
高效管理你的Linux系统: Debian操作系统常用命令指南
长期受噪音困扰影响休息,如何进行自我心理调节与舒缓?
长期受噪音困扰影响休息,如何进行自我心理调节与舒缓?
济南市网站建设服务%精准获客系统,高端网站开发设计
济南市网站建设服务%精准获客系统,高端网站开发设计
如果社保已经断缴了,在2026年还有没有机会进行补缴操作?
如果社保已经断缴了,在2026年还有没有机会进行补缴操作?
湛江市企业网站建设公司&做网站公司,收费标准
湛江市企业网站建设公司&做网站公司,收费标准
2026年通过哪些官方或正规的线上平台,可以查询到可靠的跨境招聘信息?
2026年通过哪些官方或正规的线上平台,可以查询到可靠的跨境招聘信息?
杭州市救护车长途跨省护送病人出院@120救护车一次多少钱
杭州市救护车长途跨省护送病人出院@120救护车一次多少钱
黄石市专业网站设计制作%定制化网站建设,小程序开发
黄石市专业网站设计制作%定制化网站建设,小程序开发
在马路上看到哪些问题可以通过随手拍上报并获得奖励?
在马路上看到哪些问题可以通过随手拍上报并获得奖励?
2026年异地销户是否支持线上办理,话费余额如何处理?
2026年异地销户是否支持线上办理,话费余额如何处理?
web面试常问http缓存解析相关
web面试常问http缓存解析相关
徐州市长途救护车出租&重症急救车出租,转院接送
徐州市长途救护车出租&重症急救车出租,转院接送
外卖骑手在等待取餐时,平台系统是如何自动识别和记录等时时间的?
外卖骑手在等待取餐时,平台系统是如何自动识别和记录等时时间的?