数组的索引过多

时间:2019-03-08 13:54:32

标签: python arrays numpy wav spectrogram

我在this question中使用了来自用户Anil_M的代码,我想获得相同的结果。但就我而言,它会绘制第一个图像enter image description here

然后我得到一个错误

Traceback (most recent call last):
  File "c:/Users/Maram/Desktop/Spectrogram/first_attempt.py", line 73, in <module>
    fftArray = fftArray[0:numUniquePoints]
TypeError: slice indices must be integers or None or have an __index__ method 

我不明白这个 enter image description here

或者当我尝试使用稍大的wav文件时,它甚至不显示第一张图像。我只是收到此错误:

Traceback (most recent call last):
      File "c:/Users/Maram/Desktop/Spectrogram/first_attempt.py", line 38, in <module>
        mySoundOneChannel = mySound[:,0]
    IndexError: too many indices for array

我认为这些错误在某种程度上是相关的,但我只是不了解它是如何引起的或为什么产生的。

有人可以帮我说一个更大的wav文件/更长的轨道来运行它,还是可以帮我得到现有的代码来对频率图运行功率? 任何帮助将非常感激。

(我不知道这是否被认为是重复的-在最初的问题中,没有人面临同样的问题。)

1 个答案:

答案 0 :(得分:0)

语句mySoundOneChannel = mySound[:,0]读取文件的第一个通道。如果您的文件仅包含1个频道,请将其更改为mySoundOneChannel = mySound[0:]

对于第二个问题-numUniquePoints的类型为float,因此必须强制转换-numUniquePoints = int(numpy.ceil((mySoundLength + 1) / 2.0))