1. ホーム
  2. スクリプト・コラム
  3. パイソン

[解決済み】TypeError: unhashable type: 'numpy.ndarray'.

2021-12-28 05:22:49

質問

を実装する要件があります。 Python 2.7 :3列のデータを含むテキストファイルから、単に slice で定義された値に等しい3つの列のデータのうち、最初の列の値が above . そして、このデータのスライスを、新しい配列である slice

above = range(18000, 18060, 5)

data = np.loadtxt(open('data.txt'), delimiter=None)

energies = (np.hsplit(data, 3))[0]

slice = set(energies)&set(above)

エラーが発生しました。

Traceback (most recent call last):
  File "<pyshell#27>", line 1, in <module>
    set(energies)&set(above)
TypeError: unhashable type: 'numpy.ndarray

解決方法は?

変数 energies は、おそらく間違った形をしています。

>>> from numpy import array
>>> set([1,2,3]) & set(range(2, 10))
set([2, 3])
>>> set(array([1,2,3])) & set(range(2,10))
set([2, 3])
>>> set(array([[1,2,3],])) & set(range(2,10))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'numpy.ndarray'

そして、あなたのアプローチでカラムナーデータを読み込むとこうなるのです。

>>> data
array([[  1.,   2.,   3.],
       [  3.,   4.,   5.],
       [  5.,   6.,   7.],
       [  8.,   9.,  10.]])
>>> hsplit(data,3)[0]
array([[ 1.],
       [ 3.],
       [ 5.],
       [ 8.]])

おそらく、単純に

>>> data[:,0]
array([ 1.,  3.,  5.,  8.])

の代わりに

(追記) あなたのコードは、それが data または elementdata . 単にタイプミスだと思い込んでいます)