我有代碼加載Spike2 .smr文件並在Jupyter中讀取它們。我的代碼在2天前和現在工作得很好,對於加載的文件或加載它的代碼絕對沒有變化,它不起作用。問題代碼如下...Python 2:類型錯誤「只有整數標量數組可以轉換爲標量索引」使用pd.read()neo.Spike2IO
單元1輸入(顯示我的包的版本):
import sys
print("Python version: {}\n\nPackages versions: ".format(sys.version))
# which package versions are installed?
import pip
all_packages = pip.get_installed_distributions()
used_packages = ["matplotlib", "neo", "numpy", "OpenElectrophy", "os", "pandas",
"pylab", "scipy"]
for entry in used_packages:
for p in all_packages:
if entry in str(p):
print(str(p))
小區1個輸出:
Python version: 2.7.13 |Anaconda custom (64-bit)| (default, Dec 20 2016, 23:09:15)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]
Packages versions:
matplotlib 1.4.3
matplotlib-venn 0.11.3
neo 0.3.3
numpy 1.12.0
pycosat 0.6.1
nose 1.3.7
backports.ssl-match-hostname 3.5.0.1
pandas 0.19.2
scipy 0.15.1
小區2輸入(滿載我的模塊):
import pylab
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats as st
import os
import tables
import neo
import scipy.signal as sg
from scipy import interpolate as inter
import h5py as h
import quantities as q
plt.style.use('ggplot')
pd.options.display.max_rows = 999
%matplotlib inline
現在,我加載與的Spike2 .smr文件:
r = neo.Spike2IO("Rawdata/143-16/nerve.smr").read()[0]
,並獲得下列類型的錯誤:
TypeError Traceback (most recent call last)
<ipython-input-3-f81fd520a4c5> in <module>()
----> 1 r = neo.Spike2IO("Rawdata/143-16/nerve.smr").read()[0]
/home/wolverine/anaconda/lib/python2.7/site-packages/neo/io/baseio.pyc in read(self, lazy, cascade, **kargs)
107 if not cascade:
108 return bl
--> 109 seg = self.read_segment(lazy=lazy, cascade=cascade, **kargs)
110 bl.segments.append(seg)
111 create_many_to_one_relationship(bl)
/home/wolverine/anaconda/lib/python2.7/site-packages/neo/io/spike2io.pyc in read_segment(self, take_ideal_sampling_rate, lazy, cascade)
120 if channelHeader.kind in [1, 9]:
121 #~ print 'analogChanel'
--> 122 anaSigs = self.readOneChannelContinuous(fid, i, header, take_ideal_sampling_rate, lazy = lazy)
123 #~ print 'nb sigs', len(anaSigs) , ' sizes : ',
124 for anaSig in anaSigs :
/home/wolverine/anaconda/lib/python2.7/site-packages/neo/io/spike2io.pyc in readOneChannelContinuous(self, fid, channel_num, header, take_ideal_sampling_rate, lazy)
240
241 anaSigs = [ ]
--> 242 if channelHeader.unit in unit_convert:
243 unit = pq.Quantity(1, unit_convert[channelHeader.unit])
244 else:
/home/wolverine/anaconda/lib/python2.7/site-packages/neo/io/spike2io.pyc in __getattr__(self, name)
444 else:
445 l = np.fromstring(self.array[name][0], 'u1')
--> 446 return self.array[name][1:l+1]
447 else:
448 return self.array[name]
TypeError: only integer scalar arrays can be converted to a scalar index
的 「neo.Spike2IO(」 filename.smr「)工作正常,但只要我添加了 」閱讀()[0]「部分,那是當我得到TypeError。我閱讀了這個類型的錯誤,我看到的唯一答案是該文件可能已損壞。我刪除了我的本地文件並重新下載了它,並且還下載了另一個類似的文件,以防萬一其他文件的主文件損壞。我重試了這兩個新文件的代碼,並收到了兩個類型錯誤代碼。如前所述,代碼在兩天前完美運行,現在不會加載任何.smr文件。我瀏覽並更新了所有的模塊,pip和水蟒,這些都沒有幫助。
Here is a link轉換爲我爲了共享目的而剪切的簡短示例.smr文件(僅3.1 MB)。它也給出了類型錯誤。有任何想法嗎?謝謝。