为什么是 int 类型错误?类型错误

用户21063

我收到一个错误,TypeError: slice indices must be integers or None or have an index method 。追溯就像

Traceback (most recent call last):
  File "test.py", line 24, in <module>
    wavdata = wav[z:q]
TypeError: slice indices must be integers or None or have an __index__ method

我的代码是

#coding:utf-8
import wave
import numpy as np
from pylab import *

def wavread(filename):
    wf = wave.open(filename, "r")
    fs = wf.getframerate()
    x = wf.readframes(wf.getnframes())
    x = np.frombuffer(x, dtype="int16") / 32768.0  # (-1, 1)に正規化
    wf.close()
    return x, float(fs)

if __name__ == "__main__":
    wav, fs = wavread("3_7_9.wav")
    t = np.arange(0.0, len(wav) / fs, 1/fs)

    center = len(wav) // 2  
    cuttime = 0.04         
    z = center-cuttime // 2*fs
    q= center + cuttime // 2*fs
    wavdata = wav[z:q]
    time = t[z:q]

    plot(time * 1000, wavdata)
    xlabel("time [ms]")
    ylabel("amplitude")
    savefig("waveform.png")
    show()

我认为 center & z & q 的变量是 int 类型,所以我真的不明白为什么会发生这个错误。首先,我写了这部分

if __name__ == "__main__":
    wav, fs = wavread("3_7_9.wav")
    t = np.arange(0.0, len(wav) / fs, 1/fs)

    center = len(wav) / 2  
    cuttime = 0.04         
    z = center-cuttime / 2*fs
    q= center + cuttime / 2*fs
    wavdata = wav[z:q]
    time = t[z:q]

    plot(time * 1000, wavdata)
    xlabel("time [ms]")
    ylabel("amplitude")
    savefig("waveform.png")
    show()

所以这些除法部分不是int类型而是float类型,因此我可以理解为什么会发生这个错误。但现在我把这些部分改成了//,所以这些部分是int。那么,我该如何解决这个错误?

Shreyash S Sarnayak

变量zq仍然float

center = len(wav) // 2  
cuttime = 0.04         
z = center - cuttime // 2 * fs
q = center + cuttime // 2 * fs

因为两者cuttimefsfloat,因此整个表达式变为float

你需要投它int喜欢

z = int(center - cuttime // 2 * fs)
q = int(center + cuttime // 2 * fs)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我收到非数字类型* int错误?

为什么解析方法抛出“int”类型不是“String”类型错误的子类型?

为什么'int x = +“ foo”;' 类型错误而不是语法错误?

为什么会发生这个错误?类型错误:只能将 str(不是“int”)连接到 str

不知道为什么我得到的错误会导致数组下标的错误类型为“ int [int]”

尽管变量的类型声明为double,但为什么java会给出int太大的错误?

当需要 str 和 float 时,为什么 bool 和 int 不被视为类型错误?

在cython中传递float而不是int时,为什么不出现类型错误

为什么我会从“不兼容类型'void *'”分配到“分配给'int *'”错误?

为什么数据透视表返回 Int64 类型错误?

为什么它给我这个错误?此表达式的类型为 Zt,但表达式应为 int 类型

为什么我会收到此错误:参数类型“String”不能分配给参数类型“int”?

为什么这个函数类型“类型错误”

为什么我会收到此错误?错误:二进制“ operator /”类型为“ int”和“ int(int,int)”的无效操作数

为什么我收到错误消息 Operator '||' 不能应用于“bool”和“int”类型的操作数

为什么会弹出错误 ""TypeError: 不支持的操作数类型 +: 'int' 和 'function'""

为什么我的函数的返回类型是 a -> Int

类型错误:无法排序的类型:int() > str()

Try [Int]的Scala类型错误

当我使用日期类型变量而不是硬编码日期时,为什么会出现“操作数类型冲突:日期与int不兼容”错误?

为什么此类型注释错误?

“ TypeError:“ ResourceApplyAdagradDA”操作的输入“ global_step”的类型为int32的类型与预期的int64类型不匹配。” 这是什么错误?

为什么 PHP 严格类型允许错误类型的函数参数?

为什么打字稿在类型联合上给出类型错误?

快照错误类型“int”不是“String”类型的子类型

Dart中的'int'类型不是'String'类型的子类型错误

'String'类型不是'index'错误的'int'类型的子类型

'String'类型不是'index'错误的'int'类型的子类型

为什么 Numpy 的 int 数据类型与 Numpy 的 int64 数据类型的类型不同?