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

关于numpy.ndarray默认值异常变化底层原理的技术问询

NumPy默认数组创建的内存机制解析

当直接创建shape为(2,2)的默认NumPy数组时(比如执行np.ndarray(shape=(2,2))),会得到包含极小数值的结果:

array([[2.12199579e-314, 0.00000000e+000],
       [5.35567160e-321, 7.72406468e-312]])

重复创建同配置的默认数组,结果完全一致;但如果创建同配置数组后调用fill(0)方法填充为全0,后续再创建默认(2,2)数组时,得到的就都是全0数组。

背后的运行机制可以拆解为三点:

  • 初始垃圾值的来源:np.ndarray()创建数组时,只会向系统申请一块对应大小的未初始化内存,不会自动清空内存中的原有数据。你看到的极小数值是这块内存之前被其他操作遗留的"垃圾值"。
  • 重复创建结果一致的原因:系统底层的内存分配器会缓存已释放的内存块。当你重复申请相同大小的内存时,分配器会优先返回之前释放的同一块内存,所以里面的垃圾值和第一次创建时完全相同。
  • fill后后续全0的原因:调用fill(0)会将数组对应内存块的所有字节都写入0值。当这块内存被释放后,依然会被分配器缓存,后续再创建同大小的默认数组时,复用的就是这块已经被写0的内存,因此得到全0数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 07:15:34