繁体   English   中英

类型错误:不可散列类型:'numpy.ndarray'

[英]TypeError: unhashable type: 'numpy.ndarray'

从包含我希望能够只取一个三列数据的文本文件slice数据的所有三列,其中第一列中的值等于定义的值above 然后我想将数据切片放入一个名为slice的新数组中(我使用的是Python 2.7

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.])

反而。

(PS 您的代码似乎尚未确定是data还是elementdata 。我认为这只是一个错字。)

numpy.ndarray可以包含任何类型的元素,例如intfloatstring等。检查类型并在必要时进行转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM