본문 바로가기
Python/numpy

numpy TypeError: unhashable type: 'numpy.ndarray' 오류 해결하기

by PySun 2024. 10. 7.
반응형

소개

파이썬에서 Numpy를 사용할 때 'TypeError: unhashable type: 'numpy.ndarray'' 에러가 발생하는 경우가 있습니다. 이 오류는 주로 파이썬의 집합(set)이나 딕셔너리(dictionary)와 같은 해시 가능한 객체에 Numpy 배열을 사용하려 할 때 발생합니다. 이러한 오류가 나타나는 이유와 해결 방법에 대해 알아보겠습니다.

에러 발생 예시 코드

먼저, 'TypeError: unhashable type: 'numpy.ndarray'' 에러가 발생할 수 있는 간단한 예시 코드를 살펴보겠습니다.

import numpy as np

# Numpy 배열 생성
array = np.array([1, 2, 3])

# 집합에 Numpy 배열 추가
my_set = set()
my_set.add(array)  # 여기서 TypeError 발생

에러 해결 방법

1. Numpy 배열을 튜플로 변환하기

Numpy 배열은 변경 가능한(mutable) 객체이기 때문에 해시할 수 없지만, 튜플(tuple)로 변환하면 해시 가능한 객체가 됩니다. 배열을 튜플로 변환하여 사용하면 오류를 피할 수 있습니다.

import numpy as np

# Numpy 배열 생성
array = np.array([1, 2, 3])

# Numpy 배열을 튜플로 변환하여 집합에 추가
my_set = set()
my_set.add(tuple(array))  # 오류가 발생하지 않음
print(my_set)

2. 목록(list) 사용하기

Numpy 배열 자체를 해시 가능한 형태로 만들기보다, 배열을 사용해야 할 경우에는 단순히 리스트(list)를 사용하는 것이 또 다른 해결책이 될 수 있습니다. 리스트는 해시할 필요가 없는 곳에서 활용 가능하므로, 상황에 따라 적절하게 선택합니다.

import numpy as np

# Numpy 배열 생성
array = np.array([1, 2, 3])

# 단순히 리스트로 변환하여 사용
my_list = list(array)
print(my_list)  # [1, 2, 3]

마무리

이 블로그 글에서는 Numpy를 사용할 때 발생할 수 있는 'TypeError: unhashable type: 'numpy.ndarray'' 에러에 대한 간단한 해결 방법을 살펴보았습니다. Numpy 배열을 해시 가능한 객체로 변환하거나, 다른 데이터 구조인 리스트로 사용하는 방식을 통해 이러한 오류를 피할 수 있습니다. 언제나 적절한 데이터 타입과 구조를 선택하여 코드의 안정성을 높이는 것이 중요합니다.

반응형