我通过numpy.loadtxt将一个csv文件加载到一个numpy数组中。我的数据有大约100万条记录和87列。虽然object.nbytes只有177159666个字节,但它实际上需要更多的理论,因为我在使用scikit-learn培训决策树时遇到'MemoryError'。此外,在阅读数据后,我系统中的可用内存减少了1.8个演出。我正在使用3个内存的linux机器上工作。那么object.nbytes是否会返回一个numpy数组的实际内存使用情况?Numpy数组占用太多内存
train = np.loadtxt('~/Py_train.csv', delimiter=',', skiprows=1, dtype='float16')
那么,你有没有问题? – Marcin 2012-08-02 15:01:17
这里有一个相关的问题:http://stackoverflow.com/questions/11527964/convert-a-string-list-to-float32-efficiently。基本上,np.loadtxt占用很多内存,因为它首先将数据存储在列表中,然后将这些数据转换为一个ndarray。 (至少将内存使用量增加3或4倍)。如果您知道大小,您可能需要考虑预先分配数组并自己解析它。另外,不要害怕查看np.loadtxt的源代码。这是合理的理解。 – mgilson 2012-08-02 15:03:08
@Marcin,刚刚更新了我的问题。 – ibictts 2012-08-02 15:05:25