You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何np.empty与np.zeros比较为True,与另一个np.empty比较为False?

问题解析:numpy.empty() 与数组比较的行为差异

首先得明确 numpy.empty() 和 numpy.zeros() 的核心区别:

  • numpy.zeros(n) 会创建一个长度为n的数组,并显式把所有元素初始化为0,这是完全确定的行为。
  • numpy.empty(n) 只会给数组分配内存空间,不会对元素做任何初始化,数组里的元素值是内存中残留的随机垃圾值——完全取决于当前内存的状态,没有任何规律可言。

现在拆解你的两个例子:

  1. 第一个例子 numpy.empty(3) == numpy.zeros(3) 返回全True,纯粹是巧合:那次调用empty时,分配到的内存块刚好残留了0值,所以和全0数组比较才会全匹配。你多运行几次这个代码,大概率会得到不同的结果,因为每次分配的内存残留值可能不一样。
  2. 第二个例子 numpy.empty(3) == numpy.empty(3) 返回全False,这才是更普遍的情况:两次调用empty分配的是不同的内存块,里面的残留垃圾值自然不一样,所以元素一一比较后全是False。

你的误解在于误以为empty会自动初始化为0,但实际上empty的设计目的是跳过初始化步骤来提升性能,如果你需要确定的初始值,应该用zeros、ones或者full这类会初始化的函数,绝对不能依赖empty的初始元素值。

内容的提问来源于stack exchange,提问作者kenta_desu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 23:02:34