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

嵌套字典为何拖慢numpy.save速度?附代码场景技术问询

为什么内层嵌套字典会让NumPy保存数据慢到离谱?

兄弟,你这个问题我太有共鸣了——之前用类似的嵌套结构存数据,也差点等得怀疑人生!核心原因就是NumPy对大量零散嵌套字典的序列化效率极低,而把字典结构移到外层后,数据变成了更规整的数组形式,刚好踩中了NumPy的优化点。

具体原因拆解

  • 零散小对象的序列化开销:你原来的代码在最内层循环里,每次都创建一个新的{'a': ..., 'b': ...}字典,最后总共生成了200*300=60000个独立的字典对象。NumPy在保存.npy文件时,需要逐个遍历这些字典,处理每个字典里的数组,光是遍历和序列化这些零散对象的开销就占了大头,完全发挥不出它处理连续数组的优势。
  • 规整数组的高效处理:当你把字典移到外层后,相当于把所有'a'对应的数组整合成一个大的多维数组(比如形状是(200, 300, 64, 64, 3)),'b'同理。NumPy对这种同质的、连续内存的数组结构有极强的优化,序列化时可以直接批量处理整块内存,速度自然快了N倍。

优化后的代码示例

给你写个参考版本,把字典移到外层,用两个大数组存储数据:

import numpy as np

# 直接创建两个大数组,避免内层循环生成字典
a_data = np.random.randn(200, 300, 64, 64, 3)
b_data = np.random.randn(200, 300, 64, 64, 3)

# 把数组打包成一个字典后保存
D = {'a': a_data, 'b': b_data}
np.save('data_optimized', D)

这样保存的速度会和你调整后的效果一致,而且数据结构更规整,后续加载和使用也更方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:07:37