我有3个numpy数组的插值数据。
Each of Length - 107952899
当我把这三个numpy数组合作为pandas df时,我得到了MemoryError
。
我必须做一些计算,熊猫让它更容易,所以我更喜欢用熊猫做。我相信三个numpy阵列的内存大小超过3 Gb甚至更多。
8Gb RAM python 3.6.3
我理解这种错误的原因但是有没有可能避免MemoryError,或者其他一些最佳实践要遵循?
当我将这三个numpy数组合为pandas df时,我得到了MemoryError。
让我们说你这样做:
import numpy as np
import pandas as pd
big_array_1 = np.array(np.random.random(10**7))
big_array_2 = np.array(np.random.random(10**7))
big_array_3 = np.array(np.random.random(10**7))
在我的电脑上,它需要大约300 MB的内存。
如果我这样做:
df = pd.DataFrame([big_array_1,big_array_2, big_array_3])
内存高达9Gb的内存。如果你乘以因子10(得到你的3 Gb数据而不是我的300),你将达到90 Gb,这可能比你的Ram +可用交换更多,这将提高MemoryError
。
但如果相反,你做:
df = pd.DataFrame({"A":big_array_1, "B": big_array_2, "C":big_array_3})
然后你的内存使用量不会比你的三个数组大得多。
我怀疑这是你的问题......