簡體   English   中英

使用大型數據集時發生內存錯誤

[英]Memory Error occurs while working with large dataset

我有3個numpy數組的插值數據。

Each of Length - 107952899

面對問題

當我將這三個numpy數組組合為pandas df時,我得到了MemoryError

轉換為df的原因

我必須做一些計算,大熊貓讓它變得更容易,所以我更喜歡大熊貓。 我相信三個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})

那么您的內存使用量將不會明顯大於三個陣列之一。

我懷疑這是你的問題...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM