类型错误:';int';对象在python的列表中不可下标
我得到一个TypeError:在下面的代码中,行类型错误:';int';对象在python的列表中不可下标,python,arrays,error-handling,Python,Arrays,Error Handling,我得到一个TypeError:在下面的代码中,行sig\u data=sig\u data[0:file\u length\u num]上的“int”对象不可下标- def create_slice_from_wav(file_path, file_len, slice_len, step_size): #read in wav file samp_freq, sig_data = sf.read(file_path) #convert file_length from min
sig\u data=sig\u data[0:file\u length\u num]
上的“int”对象不可下标-
def create_slice_from_wav(file_path, file_len, slice_len, step_size):
#read in wav file
samp_freq, sig_data = sf.read(file_path)
#convert file_length from min to sample numbers
file_length_num = 5*samp_freq*60
#convert slice_len from ms to sample numbers
slice_sample_num = slice_len*samp_freq/1000
#use only slices within file_length
sig_data = sig_data[0:file_length_num]
#determine number of samples and length
n_samples = sig_data.shape[0]
sig_len = n_samples/samp_freq
print('Length: ' + str(sig_len) + ' sec')
似乎
sig_data
在代码中是一个int。你不能对一个int进行迭代,它必须是一个int的列表/数组等等。在Python(以及我所知道的所有编程语言)中,不可能为整型数据类型指定索引。
您可以假设sig_data
是作为列表(或元组)读入的,但实际上,它是作为整数捕获的。
由于变量sig_data
的计算结果为整数,因此出现该错误
您可以共享文件的内容吗?这里,sig_数据是一个整数,但我假设您认为sig_数据是一个列表。问题来自这样一个事实,即不允许对整数进行切片,从而导致错误。可以使用type(sig_数据)轻松找到sig_数据的类型;你会发现它是一个int 注意:如果您不理解subscriptable的含义,请查看以下内容: 从中,它看起来像是
sf.read()
将输出返回元组第一个元素的数据和第二个元素的采样率。这意味着您已经颠倒了元组顺序
如果您将代码更改为
sig\u data,samp\u freq=sf.read(file\u path)
它应该可以工作。尝试查看type(sig\u data)
的输出,它很可能是一个整数……他刚刚颠倒了代码上的返回元组。看看我的答案,你会看到正确的解决方案。谢谢@jpnadas的澄清。看来我只是解决了症状,但你找到了治疗方法。