从包含三列数据的文本文件中,我希望能够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)
Run Code Online (Sandbox Code Playgroud)
以上回复:
Traceback (most recent call last):
File "<pyshell#27>", line 1, in <module>
set(energies)&set(above)
TypeError: unhashable type: 'numpy.ndarray
Run Code Online (Sandbox Code Playgroud)
DSM*_*DSM 33
你的变量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'
Run Code Online (Sandbox Code Playgroud)
如果您使用您的方法读取柱状数据,会发生这种情况:
>>> data
array([[ 1., 2., 3.],
[ 3., 4., 5.],
[ 5., 6., 7.],
[ 8., 9., 10.]])
>>> hsplit(data,3)[0]
array([[ 1.],
[ 3.],
[ 5.],
[ 8.]])
Run Code Online (Sandbox Code Playgroud)
也许你可以简单地使用
>>> data[:,0]
array([ 1., 3., 5., 8.])
Run Code Online (Sandbox Code Playgroud)
代替.
(PS你的代码看起来似乎尚未决定是否data或elementdata.我认为这只是一个错字.)
| 归档时间: |
|
| 查看次数: |
159729 次 |
| 最近记录: |