我是Python的新手,当我使用Numpy hstack
将两个pandas
数据帧连接在一起时,我不确定为什么我会看到内存使用量激增。 pandas.concat
的表现更糟 - 如果它完全结束 - 所以我使用的是NumPy。
两个数据帧相对较大,但我有20 GB的空闲RAM(使用11GB,包括我要复制的两个数据帧)。
数据框a和b具有形状:
a.shape (66377, 30)
b.shape (66377, 11100)
当我使用np.hstack((a,b))
时,免费的20GB已经用完了。
答案 0 :(得分:2)
np.hstack
返回一个包含基础数据副本的新数组,因此在执行此操作时,您的内存使用量会翻倍。
您可以使用a.nbytes
,b.nbytes
等检查每个阵列的内存使用情况。
答案 1 :(得分:1)
如图in this thread所示,不可能在适当的位置附加一个数组,因为无法保证扩展数组在内存中保持连续性,所以效率不高。
如果在连接数组后删除对象a
和b
,Python的垃圾收集器应该释放你的内存:
a = append(a, b, axis=1)
del b
如果它没有释放你可以强迫它:
import gc
gc.collect()