numpy 배열을 해시 가능하게 만드는 한 가지 방법은 읽기 전용으로 설정하는 것입니다. 이것은 과거에 저에게 효과적이었습니다. 그러나 튜플에서 그런 열세 배열을 사용할 때, 전체 튜플은 더 이상 해시 가능하지 않습니다. 이해할 수 없습니다. 다음은 문제를 설명하기 위해 함께 사용한 샘플 코드입니다.numpy 배열을 포함하는 튜플을 만드는 방법은 무엇입니까?
import numpy as np
npArray = np.ones((1,1))
npArray.flags.writeable = False
print(npArray.flags.writeable)
keySet = (0, npArray)
print(keySet[1].flags.writeable)
myDict = {keySet : 1}
먼저 간단한 numpy 배열을 만들고 읽기 전용으로 설정합니다. 그런 다음 튜플에 추가하고 여전히 읽기 전용인지 확인합니다 (어느 쪽인지).
튜플을 사전의 키로 사용하려면 TypeError: unhashable type: 'numpy.ndarray'
오류가 발생합니다. 여기
False
False
Traceback (most recent call last):
File "test.py", line 10, in <module>
myDict = {keySet : 1}
TypeError: unhashable type: 'numpy.ndarray'
내가 내 튜플 해쉬을 위해 할 수있는 이유는 파이썬이 처음부터이 문제가 표시되는 이유는 무엇입니까?
'writeable' 플래그를'False'로 설정하면 배열을 해시 가능하게 만들 수 있다는 아이디어를 얻었습니까? 터플을 그림으로 가져 오기 전에도 작동하지 않습니다. – user2357112
numpy 배열에는 필수 해싱 메소드 ('__hash__'와 같은 것)가 없습니다. – hpaulj
방법은 여기에 설명되어 있습니다 : https://stackoverflow.com/questions/16589791/most-efficient-property-to-hash-for-numpy-array – Demento