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

Google Colab下如何借助磁盘创建100k×100k numpy数组避免RAM崩溃

大尺寸numpy数组磁盘创建与操作解决方案

100000×100000的numpy数组默认采用float64类型,总大小约为74.5GB,远高于Google Colab免费版分配的运行内存上限,因此直接在内存中创建会触发RAM崩溃。

方案1:使用numpy原生memmap(兼容原有操作逻辑)

numpy内置的memmap工具可以直接将数组主体存储在磁盘上,仅将当前操作的分片加载到内存,API和普通numpy数组完全一致,你原有的赋值、累加逻辑不需要做任何修改就能直接使用。

使用示例:

import numpy as np

# 配置数组参数
shape = (100000, 100000)
# 可根据精度需求调整dtype,float32仅占float64一半的磁盘空间,约37GB
dtype = np.float32

# 创建磁盘映射数组,mode='w+'代表读写权限
arr = np.memmap('large_array.npy', dtype=dtype, mode='w+', shape=shape)
# 初始化为全0,等价于np.zeros的效果
arr[:] = 0

# 赋值、累加操作和普通numpy数组完全一致
arr[100, :] = 20
arr += 10

# 操作完成后手动刷入磁盘,避免异常退出导致数据丢失
arr.flush()

# 后续需要重新加载已存在的数组时使用如下代码即可
# arr = np.memmap('large_array.npy', dtype=dtype, mode='r+', shape=shape)

注意事项:

  • 提前确认磁盘空间充足,Colab免费版临时磁盘容量约100GB,满足需求,若需要持久化存储数组可以挂载Google Drive后将文件路径指向Drive目录
  • memmap的随机读写性能低于内存数组,建议尽量按块批量操作数据,减少随机IO次数

方案2:稀疏矩阵优化(适用于零元素占比高的场景)

如果你的数组中90%以上的元素都是0,可以直接使用稀疏矩阵存储,不需要占用磁盘空间,操作效率远高于磁盘映射数组:

import numpy as np
from scipy.sparse import csr_matrix

# 直接创建10万×10万的稀疏全0矩阵
arr = csr_matrix((100000, 100000), dtype=np.float32)

# 支持常规赋值、累加操作
arr[0, 100] = 50
arr += 5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:09:01