我使用numpy.array
编写了一个 cython 函数来对大数组执行某些计算,例如数组的大小为24000x1500
。然后我得到MemoryError
。
我想知道在python中使用float64
组件的二维数组的最终大小是多少?
是否由于我的阵列大小而发生此错误?
我该怎么做才能避免此错误?
答案 0 :(得分:1)
由于64位浮点占用8个字节,因此您可以轻松估计24,000 * 1500 * 8 = 288,000,000字节的下限,大约为0.3 GB。我不知道numpy数组产生的开销,但我猜这对于一个大小的数组来说并不重要。
根据我在上述评论中链接的答案,您还可以使用arr.numbytes
找到尺寸。它还返回数组元素使用的内存。
我可以看到使用那么多内存的程序如何抛出MemoryError
。做一些内存分析,看看它是你的大阵列(可能)还是别的东西会占用你的记忆。或者购买更多内存。