使python代码在spyder中执行得更快
我正在用python运行下面的代码,代码读取一个wav文件。计算FFT,过滤FFT值,然后绘图。输出在一小时左右之后。。 如何知道python中哪部分代码花费的时间更长,以及在此代码中可以优化哪些内容使python代码在spyder中执行得更快,python,matplotlib,fft,spyder,Python,Matplotlib,Fft,Spyder,我正在用python运行下面的代码,代码读取一个wav文件。计算FFT,过滤FFT值,然后绘图。输出在一小时左右之后。。 如何知道python中哪部分代码花费的时间更长,以及在此代码中可以优化哪些内容 import scipy.io.wavfile as wavfile import scipy.fftpack as fftpack from matplotlib import pyplot as plt import pandas as pd import numpy as np def pe
import scipy.io.wavfile as wavfile
import scipy.fftpack as fftpack
from matplotlib import pyplot as plt
import pandas as pd
import numpy as np
def percentage(percent, whole):
return (percent * whole) / 100.0
sample_rate, sample = wavfile.read("Test.wav")
print ("Sample rate", sample_rate," Hz")
num_of_channels = len(sample.shape)
print ("Channels", num_of_channels,"Audio data shape",sample.shape)
if num_of_channels == 2:
sample = sample.sum(axis=1) / 2
N = sample.shape[0]
wav_length = N / sample_rate
print ("Duration of audio wav file in secs", wav_length,"Samples chosen",sample.shape[0])
time =np.linspace(0, wav_length, sample.shape[0])
sampling_interval=time[1]-time[0]
#-----------------------Graph plotting----------------------------
params = {'legend.fontsize': '20',
'font.family': 'Times New Roman Bold',
'font.size': '15',
'axes.labelsize': 'x-large',
'axes.labelweight': 'bold',
'axes.titlesize':'x-large',
'xtick.labelsize':'x-large',
'ytick.labelsize':'x-large',
'font.weight':'bold'}
plt.rcParams.update(params)
#---------------FFT of Original sample-----------------------
fft_sample_data=2.0*np.abs(fftpack.fft(sample)/len(time))
fft_freqs=fftpack.fftfreq(len(time),sampling_interval)
print("Frequency range ",fft_freqs)
mask = fft_freqs > 0
#------Filter the Data points of FFT---------------------
df = pd.DataFrame({"Frequency" : fft_freqs[mask], "Sample Data" : fft_sample_data[mask]})
column = df["Sample Data"]
max_value = column.max()
percentage_90 = percentage(70,max_value)
MoreThan90_filter = df[percentage_90 <= df['Sample Data']]
MoreThan90_filter.to_csv("MoreThan90_FFTDataSet.csv",header=None, index=False)
df.to_csv("FFTDataSet.csv", index=False)
print("Complete FFT Dataset Count ",df.count())
plt.figure(1)
data = np.genfromtxt("MoreThan90_FFTDataSet.csv", delimiter=",", names=["x", "y"])
print(data['x'],data['y'])
plt.plot(data['x'], data['y'])
plt.xlabel('Frequency [Hz]')
plt.ylabel('Sample Data')
plt.legend()
plt.show()
将scipy.io.wavfile导入为wavfile
将scipy.fftpack作为fftpack导入
从matplotlib导入pyplot作为plt
作为pd进口熊猫
将numpy作为np导入
def百分比(百分比,全部):
回报率(百分比*全部)/100.0
样本率,样本=wavfile.read(“Test.wav”)
打印(“采样率”,采样率,“Hz”)
通道数=len(sample.shape)
打印(“频道”,频道数,“音频数据形状”,sample.shape)
如果通道数=2:
样本=样本。总和(轴=1)/2
N=样本。形状[0]
波形长度=N/采样率
打印(“音频wav文件的持续时间(秒)”,wav_长度,“选择的样本”,sample.shape[0])
时间=np.linspace(0,波形长度,sample.shape[0])
采样间隔=时间[1]-时间[0]
#-----------------------图形绘制----------------------------
params={'legend.fontsize':'20',
“font.family”:“Times New Roman Bold”,
“font.size”:“15”,
“axes.labelsize”:“x-large”,
“axes.labelweight”:“粗体”,
'axes.titlesize':'x-large',
'xtick.labelsize':'x-large',
'ytick.labelsize':'x-large',
'font.weight':'bold'}
plt.rcParams.update(参数)
#---------------原始样本的FFT-----------------------
fft_样本_数据=2.0*np.abs(fft包fft(样本)/len(时间))
fft\u freqs=fftpack.fftfreq(len(时间),采样间隔)
打印(“频率范围”,fft\U频率)
掩码=fft\u频率>0
#------滤波FFT的数据点---------------------
df=pd.DataFrame({“频率”:fft_freqs[mask],“采样数据”:fft_Sample_Data[mask]})
column=df[“样本数据”]
max_value=column.max()
百分比90=百分比(70,最大值)
Morethan 90_filter=df[百分比]看看。它可以显示如何为代码分配执行时间。