如何修复“ numpy.float64”对象无法解释为整数”

时间:2019-01-08 20:14:50

标签: python

我正在研究抑郁症,当我尝试运行代码的这一部分时,出现以下错误消息。我正在使用python 3.6

我已尽一切努力修复此问题:

samples = int (np.append(np.zeros(np.floor(frameSize/2.0)), sig))   

作者:

samples = np.append(np.zeros(int (frameSize/2.0)), sig)

samples = np.append(np.zeros((frameSize//2), sig)

samples = np.append(np.zeros(np.floor((int(frameSize))/2.0)), sig)

我也将numpy版本从1.15.4更改为1.11.0,但是我仍然遇到相同的问题。我不知道如何解决这个问题。

代码是:

import numpy as np
from numpy.lib import stride_tricks
import os
from PIL import Image
import scipy.io.wavfile as wav

def stft(sig, frameSize, overlapFac=0.5, window=np.hanning):
"""
Short-time Fourier transform of audio signal.
"""
   win = window(frameSize)
   hopSize = int(frameSize - np.floor(overlapFac * frameSize))
  # zeros at beginning (thus center of 1st window should be for sample nr. 
  0)
  samples = np.append(np.zeros(np.floor(frameSize/2.0)), sig)
  # cols for windowing
  cols = np.ceil((len(samples) - frameSize) / float(hopSize)) + 1
  # zeros at end (thus samples can be fully covered by frames)
  samples = np.append(samples, np.zeros(frameSize))

  frames = stride_tricks.as_strided(samples, shape=(cols, frameSize),
                                  strides=(samples.strides[0]*hopSize,
                                  samples.strides[0])).copy()
   frames *= win

   return np.fft.rfft(frames)

错误消息:

 File "E:/depression detection/features/spectrograms.py", line 21, in stft
 samples = int (np.append(np.zeros(np.floor(frameSize/2.0)), sig))

TypeError: 'numpy.float64' object cannot be interpreted as an integer

3 个答案:

答案 0 :(得分:0)

因为

    samples = np.append(samples, np.zeros(frameSize))

输出列表。.np.zeroes给出列表

答案 1 :(得分:0)

就我而言,我不得不将numpy版本1.18.0降级到1.17.4。

答案 2 :(得分:0)

尝试这些,它们对我有用,

用这些替换帧和样本

frames = stride_tricks.as_strided((samples), shape=(int(cols), int(frameSize)), strides=((samples).strides[0]*int(hopSize)

samples = np.append(np.zeros(int(np.floor(frameSize/2.0))), sig)