解决MemoryError(从创建大型矩阵中产生)的编程方法有哪些?

2024-09-25 10:26:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我通过在同一个函数中创建4个大小为:(115005L, 6005L) (9738L, 6005L) (115005L, 9738L) and (115005L, 6005L)的矩阵得到了MemoryError。现在我在Windows中的Python 2.7.13 (Anaconda 64-bit)。将python更新到3.x是解决问题的最佳方法吗?或者如何在不修改硬件的情况下解决内存错误?我必须使用这台电脑,但我没有权力购买或添加任何东西。你知道吗


Tags: and方法函数内存硬件windows错误bit
2条回答

众所周知,在许多领域,Python 3比Python 2.7需要更多的内存:

  • 字符串是unicode的,因此它们使用的内存是Python 2字节字符串的两倍
  • python3int类型相当于python2long类型,因此同样需要更多内存

在其他域中可能会有一些改进,但我不希望从python2传递到python3能够解决任何内存不足的问题。你知道吗

增加物理内存应该是更可靠的方法。你知道吗

可以使用.astype(t)方法向下转换数据中的数字类型,以在一定程度上节省内存。例如:

rr.shape
Out[69]: (15000, 35)
rr.nbytes
Out[70]: 4200000
zz = rr.astype('float16')
zz.nbytes
Out[72]: 1050000

相关问题 更多 >