본문 바로가기
Python/numpy

NumPy MemoryError: Unable to allocate array with shape (100000, 100000) and dtype=float64 오류 해결하기

by PySun 2024. 10. 15.
반응형

소개

NumPy를 사용할 때, 때때로 'MemoryError: Unable to allocate array with shape (100000, 100000) and dtype=float64'라는 오류가 발생할 수 있습니다. 이는 큰 배열을 메모리에 할당하려 할 때 시스템의 메모리가 부족하여 발생하는 문제입니다. 이번 포스팅에서는 이 오류의 원인과 해결 방법에 대해 알아보겠습니다.

에러 발생 예시 코드

먼저, 위의 오류가 발생할 수 있는 간단한 예시 코드를 살펴보겠습니다.

import numpy as np

# 큰 배열 생성
large_array = np.zeros((100000, 100000), dtype=np.float64)
print(large_array)

에러 해결 방법

1. 배열 크기 줄이기

주어진 사용 사례에 맞춰 배열의 크기를 조절하면 메모리 사용량을 줄일 수 있습니다. 예를 들어, 필요한 데이터의 크기를 작게 만들어서 메모리 오류를 피할 수 있습니다.

import numpy as np

# 더 작은 배열 생성
small_array = np.zeros((10000, 10000), dtype=np.float64)
print(small_array)

2. 데이터 타입 변경

데이터 타입을 바꾸면 메모리 사용량을 크게 줄일 수 있습니다. 예를 들어, float32를 대신 사용하면, 메모리 사용량이 절반으로 줄어듭니다.

import numpy as np

# float32로 배열 생성
optimized_array = np.zeros((100000, 100000), dtype=np.float32)
print(optimized_array)

3. Dask 활용하기

만약 실제로 큰 데이터셋을 처리해야 한다면, Dask와 같은 라이브러리를 사용하여 데이터를 조작할 수 있습니다. Dask는 메모리 효율적으로 데이터를 처리할 수 있도록 도와줍니다.

import dask.array as da

# Dask 배열 생성
dask_array = da.zeros((100000, 100000), dtype=np.float64, chunks=(10000, 10000))
print(dask_array)

마무리

이번 블로그 포스팅에서는 NumPy에서 'MemoryError: Unable to allocate array with shape (100000, 100000) and dtype=float64' 오류를 해결하는 몇 가지 방법을 소개했습니다. 배열의 크기를 줄이거나 데이터 타입을 최적화하며, Dask와 같은 라이브러리를 활용하여 메모리 문제를 극복할 수 있습니다. 항상 메모리 사용량을 고려하여 최적의 방법을 선택하는 것이 중요합니다!

반응형