Pycharm报错MemoryError: Unable to allocate 927. MiB for an array with shape (25487, 685, 9) and data type
用pandas导入了1个g大小的csv,结果报错MemoryError:
用了网上的方法都没什么效果,最后发现是自己代码的问题哈哈
网上的方法:
1、修改pycharm的运行内存 (Help->Find Action->(type “VM Options”)->(Click)"Edit Custom VM Options"进行编辑修改-Xmx750m 为 -Xmx4096m )(仍然不行)
2、numpy 在定义数组的时候,采用更低的精度(我把float64改成32,还是报错,改成16的话已经不符合我代码的要求了)。
3、可能原因是电脑虚拟内存占用太大,需要修改电脑的虚拟内存(我的电脑-右键属性-高级-性能设置-选择高级-更改-点击E盘-点击自定义大小-设置分配内存),(操作了一下发现不行。还以为是c盘只剩下9个G的缘故,把D盘格式化,合并到C盘,吐了发现还是不行)
===========================================================
由于上面的方法都试了,没法解决我的问题,只能想办法把1g的数据分割一下,让矩阵小一点了,在过程中发现了问题所在:
这是原来的代码:
一次性导入了所有的数据集,然后截取循环截取一小段。报错MemoryError
train_step11 = pd.read_csv("train_features.csv")
while (cnt <= sensor_num):
now_value = train_step11.values[cnt:cnt+91]
cnt=cnt+91
注意到:train_step11.values这个操作是把表中所有的数值都取出来,然后[cnt:cnt+91]截取很小一部分。每次循环都要操作近1个g的数据量。。。
所以把这两个位置调换了一下:
train_step11 = pd.read_csv("train_features.csv")
while (cnt <= sensor_num):
now_value = train_step11[cnt:cnt+91].values
cnt=cnt+91
问题解决。。
版权声明:本文为weixin_46626422原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。