内存错误在实例化numpy数组时

时间:2016-12-23 08:14:53

标签: python numpy memory

我有一个列表 A 的50,000个元素,每个元素都是一个形状数组(102400)

我尝试了实例化数组 B

     B=numpy.array(A)

但是这引发了一个异常MemoryError。我知道内存和大小非常大吗?但有没有办法在numpy中使用ndarrays来避免这个MemoryError?

2 个答案:

答案 0 :(得分:0)

假设它们是int64(默认的numpy类型)。每个占用8个字节,然后: 维度占每个占用的字节数:

50000 * 102400 * 8 = 40960000000

以千兆字节为单位

50000 * 102400 * 8 / 1024**3 = 38.14697265625 Gb

答案 1 :(得分:0)

作为一种解决方法,您可以避免使用以下内容复制数组:

B = np.empty(len(A), dtype=object)
for i, a in enumerate(A):
    B[i] = a

这将允许创建一个dtype object的ndarray,其元素将是A的原始元素。然后,您可以对其执行一些数组操作。

但我不确定你是否会以这种方式获胜。