首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有什么编程方法可以解决MemoryError (从创建大矩阵中提升)?

有什么编程方法可以解决MemoryError (从创建大矩阵中提升)?
EN

Stack Overflow用户
提问于 2017-11-28 21:04:23
回答 2查看 46关注 0票数 0

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

EN

回答 2

Stack Overflow用户

发布于 2017-11-28 21:32:59

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

代码语言:javascript
运行
复制
rr.shape
Out[69]: (15000, 35)
rr.nbytes
Out[70]: 4200000
zz = rr.astype('float16')
zz.nbytes
Out[72]: 1050000
票数 1
EN

Stack Overflow用户

发布于 2017-11-28 21:43:35

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

  • 字符串是unicode,因此它们使用的内存是Python 2字节字符串的两倍
  • Python 3 int类型等同于Python 2 long类型,因此需要更多内存

在其他领域可能出现了一些改进,但我不希望从Python2传递到Python3可以解决任何内存不足的问题。

增加物理内存应该是一种更可靠的方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47532330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档