numpy配列をハッシュ可能にする1つの方法は、それを読み取り専用に設定することです。これは過去に私のために働いてきました。しかし、タプルでこのような数値配列を使うと、タプル全体がもはやハッシュ可能ではなくなります。私は理解しません。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'
は、私は私のタプルがハッシュ可能にするために何ができるのと、なぜPythonは最初の場所でこの挙動を示すのか?
'writeable'フラグを' False'に設定すると、配列はハッシュ可能になるという考えをどこから得ましたか?タプルを画像に取り込む前でさえ、これはうまくいかない。 – user2357112
numpyの配列には、必要なハッシュ方法( '__hash__'のようなもの)がありません。 – hpaulj
方法はここに記述されています:https://stackoverflow.com/questions/16589791/most-efficient-property-to-hash-for-numpy-array – Demento