![](/img/trans.png)
[英]converting a list to numpy array resulting much larger memory than expected
[英]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.