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

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年的市场环境,独立开发者应聚焦解决用户的哪些痛点?
别墅抵押贷款LPR怎么影响利率?LPR调整与月供变化关系解读
别墅抵押贷款LPR怎么影响利率?LPR调整与月供变化关系解读
如何通过角色扮演类玩具,有效培养孩子的同理心与情绪管理能力?
如何通过角色扮演类玩具,有效培养孩子的同理心与情绪管理能力?
过桥垫资让与担保效力?名为买卖实为借贷
过桥垫资让与担保效力?名为买卖实为借贷
别墅抵押贷款可以抵押给典当行吗?典当行别墅抵押贷款利弊
别墅抵押贷款可以抵押给典当行吗?典当行别墅抵押贷款利弊
公司经营贷款集团授信流程,企业集团统一授信
公司经营贷款集团授信流程,企业集团统一授信