python numpy矩阵存储数据 报 MemoryError

python调用np存储数据。突然间啥提示也没有,就MemoryError 就停了。

网上有人说

python中的numpy 所创建的矩阵大小是有限的,无法创建上万行或者是列的矩阵,如下图错误

想想我的代码,确实类似,我一次性存储4万图片,可能有点多了,于是改小一点,果然就不报这个错了。

 


参考别人的建议方法:

在用Python处理大数据时,本来16G的内存,内存还没使用四分之一就开始报MemoryError的错误,后来才知道32bit的Python使用内存超过2G之后,就报这个错误,还没有其他的提示消息。果断换64bit的Python。
一开始安装32bit的Python,是因为numpy和scipy官方版本只支持32bit的,后来又找到了非官方的版本http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy
wheel文件安装时出现:Fatal error in launcher: Unable to create process using '“”C:\Program Files (x86)\Python33\python.exe“” “C:\Program Files (x86)\Python33\pip.exe”
http://stackoverflow.com/questions/24627525/fatal-error-in-launcher-unable-to-create-process-using-c-program-files-x86上找到解决方法:
python -m pip install XXX


python处理大数据集时容易出现内存错误也就是内存不够用。

1. python原始的数据类型占用空间比较大,且没有太多的选择,默认一般好像是24字节,但是实际有时候不需要这么大或这么高精度,这时候可以使用numpy中的float32, float16等,总之根据自己的需要选够用就行,这就是好几倍的内存节省。

2. python的垃圾回收机制比较懒惰,有时候在一个for循环中的变量用完不会回收,下次重新初始化的时候又重新开辟了空间,这时候可以手动del这个变量,del x,然后import gc, 然后手动gc.collect()

3. 在数据是稀疏的情况下,如训练集中大量one hot特征,此时把dense的数据转成sparse的存储方式,可以参考scipy里面的sparse模块,里面有多种支持sparse存储的数据结构可以直接调用。但是注意里面的集中数据结构至少都需要dense数据2-3倍的空间来存储,也就是说,如果你的数组中,sparse的只有一半甚至更少,那使用sparse结构只会占用更多的空间。只有在数据中大量都是稀疏的情况下才能用。

4. 本质上还是检查自己组织数据的方式是否有问题,比如是不是可以在每个batch中one hot,总之就是不要把各种需要和不需要的所有东西一次性存到内存中。
--------------------- 

原文:https://blog.csdn.net/yimingsilence/article/details/79717768 

参考:https://jingyan.baidu.com/article/a65957f434970a24e67f9be6.html

https://zhidao.baidu.com/question/2058013252876894707.html

推荐有兴趣可以看一下:https://blog.csdn.net/weixin_39750084/article/details/81501395

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值