首页 > 解决方案 > 由于内存错误从文件加载时 Numpy 数组崩溃,但原始 numpy 变量是在同一环境中创建的

问题描述

我有一个非常大的 numpy 数组,我创建并保存它没有问题

numpy.save('file.npy', NumpyArrays)

但是,当我尝试使用

NumpyArrays = numpy.load('file.npy')

在完全相同的环境(Google Colaboratory)中,我的环境由于内存不足而崩溃。我尝试重新启动环境以使其保持新鲜,我尝试的唯一操作是加载数组,但它仍然崩溃。

与尝试从内存中加载相同的数组相比,创建和保存原始 numpy 数组的环境如何占用更少的内存?

我尝试使用此处的答案来节省内存

部分读取大型 numpy 文件的有效方法?

仅以写入模式打开,但我收到此错误

ValueError:数组无法进行内存映射:dtype 中的 Python 对象。

我猜这是因为第二列是整数列表。

如果这是相关的,这就是我的 numpy 变量的样子

numpyVariable[0:5]

array([[0, list([10158697, 5255434, 9860860, 3677049, 3451292, 7225330])],
       [1,
        list([5985929, 7356938, 5232932, 4623077, 10461651, 6629144, 2738221, 7672279, 3197654, 11678039, 1912097, 6581279, 8141689, 6694817, 6139889, 7946369, 3995629, 3169031, 3793217, 6990097, 11298098, 6120907, 5336712, 7366785, 7363171, 3933563, 6484209, 4243394, 6371367, 4361218, 11469370, 6166715, 11519607, 11602639, 10759034, 6432476, 5327726, 11390220, 7009744, 10225744, 3781058, 1305863, 462965, 1158562, 2620006, 73896, 4945223, 11780201, 3044821])],
       [2, list([10847593, 8665775, 341568, 4164850, 6509965, 8227738])],
       [3,
        list([9105020, 1896456, 2757197, 5911741, 8123078, 10629261, 5646782, 5255907, 8802504, 3735293, 5496511, 1612181, 10029269, 8911733, 8035123, 4855475, 2226494, 10448630, 2041328, 532211, 10049766, 7320606, 7783187, 11536583, 9192742, 8965808, 7750786, 2462038, 111935, 4306882, 11193228])],
       [4,
        list([11406300, 9947761, 2539951, 1928472, 1286647, 1360522, 9680046, 1304518, 2577907, 5903319, 6304940, 8249558, 11156695, 5704721, 9753227, 465481, 8849435, 5040956, 8124190, 11094867, 9225419, 10531161, 3796335, 6660230, 823696, 3271428, 9167574])]],
      dtype=object)

由于这可能很难解释,这里是原始的 pandas 数据帧,numpy 数组是从中转换而来的(使用df.values

    EmbedID MappedC
0   0   [10158697, 5255434, 9860860, 3677049, 3451292,...
1   1   [5985929, 7356938, 5232932, 4623077, 10461651,...
2   2   [10847593, 8665775, 341568, 4164850, 6509965, ...
3   3   [9105020, 1896456, 2757197, 5911741, 8123078, ...
4   4   [11406300, 9947761, 2539951, 1928472, 1286647,...

第一列是整数,第二列是整数列表。

标签: pythonnumpy

解决方案


推荐阅读