我有3个numpy数组的内插数据。
Each of Length - 107952899
当我将这三个numpy数组组合为pandas df时,我得到了MemoryError
。
我必须做一些计算,大熊猫使其变得更容易,所以我更喜欢大熊猫。 我相信三个numpy阵列的内存大小会超过3 Gb,甚至更多。
8Gb RAM python 3.6.3
我了解发生此类错误的原因 但是有没有可能避免MemoryError或其他可以遵循的最佳实践?
答案 0 :(得分:2)
当我将这三个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})
然后,您的内存使用量将不会明显大于三个阵列之一。
我怀疑这是您的问题...