繁体   English   中英

numpy数组内存大于预期

[英]numpy array memory larger than expected

我有一个文件bad_orders.csv约16GB,可以读取到58GB RAM机器中的numpy数组中。

ubuntu@ip-172-31-22-232:~/Data/Autoencoder_Signin/joined_signin_rel$ free -g
          total        used        free      shared  buff/cache   available
Mem:             58           0          58           0           0          58
Swap:             0           0           0

当我运行以下命令时,该作业已被反复杀死:

import numpy as np
arr = np.genfromtxt('bad_orders.csv', delimiter =',', missing_values='',dtype='float32')

终端显示它正在使用不成比例的内存:

ubuntu@ip-172-31-22-232:~$ free -g
          total        used        free      shared  buff/cache   available
Mem:             58          42          12           0           3          16
Swap:             0           0           0

然后,我尝试从原始文件中抽取10000行并检查内存使用情况:

In [7]: samples = np.genfromtxt('samples.csv',delimiter=',', 
missing_values='', dtype='float32')

In [8]: samples.nbytes
Out[8]: 16680000

样本numpy数组显示为0.017GB。 我的文件总共有约800万行,因此,如果内存使用量呈线性增长,那么大的numpy数组将占用13GB的内存。 当我读取整个文件时,为什么占用了超过50GB的空间?

genfromtxt具有很多类型检查,仅适用于小型文件。 对于较大的文件,最好使用loadtxt文件,尽管仍比这里提到的文件使用更多的内存。 另一个更好的方法是使用pandas的read_csv

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM