python-3.x - ValueError: x 和 y 必须具有相同的第一维,但具有形状 (2140699,) 和 (4281398,)
问题描述
我使用 miniconda jupyter notebook python,我正在尝试实现一台机器(音频过滤)。我收到了这个错误,我真的不知道如何解决它。
在这里,我使用文件的路径导入了我需要的库:
import wave as we
import numpy as np
import matplotlib.pyplot as plt
dir = r'/home/pc/Downloads/Bubble audios'
这里应该绘制图表的功能:
def read_wav(wavfile, plots=True, normal=False):
f = wavfile
params = f.getparams()
# print(params)
nchannels, sampwidth, framerate, nframes = params[:4]
strData = f.readframes(nframes) # , string format
waveData = np.frombuffer(strData, dtype=np.int16) # Convert a string to an int
# wave amplitude normalization
if normal == True:
waveData = waveData*1.0/(max(abs(waveData)))
#
if plots == True:
time = np.arange(0, nframes ,dtype=np.int16) *(1.0 / framerate)
plt.figure(dpi=100)
plt.plot(time, waveData)
plt.xlabel("Time")
plt.ylabel("Amplitude")
plt.title("Single channel wavedata")
plt.show()
return (Wave, time)
def fft_wav(waveData, plots=True):
f_array = np.fft.fft(waveData) # Fourier transform, the result is a complex array
f_abs = f_array
axis_f = np.linspace(0, 250, np.int(len(f_array)/2)) # map to 250
# axis_f = np.linspace(0, 250, np.int(len(f_array))) # map to 250
if plots == True:
plt.figure(dpi=100)
plt.plot(axis_f, np.abs(f_abs[0:len(axis_f)]))
# plt.plot(axis_f, np.abs(f_abs))
plt.xlabel("Frequency")
plt.ylabel("Amplitude spectrum")
plt.title("Tile map")
plt.show()
return f_abs
在这里,我使用要读取和绘制的文件调用该函数。
f = we.open(dir+r'/Ars1_Aufnahme.wav', 'rb')
Wave, time = read_wav(f)
我得到的错误:
ValueError: x and y must have same first dimension, but have shapes (2140699,) and (4281398,)
我尝试使用 np.reshape 但它没有用,或者我可能用错了。那么,有什么建议吗?
解决方案
看来您的时间是波浪大小的 1/2。也许你nframe
的太短了。如果你这样做nframses = 2*nframes
是什么错误?
推荐阅读
- javascript - 未捕获的 RangeError:p5.js 中超出了最大调用堆栈大小
- pandas - 如何在特定条件下选择 pandas 行?
- excel - 使用 Script Lab 调用在现有加载项中定义的函数
- swift - 如何在 MacOS 上使用 Swift 将项目复制到查找器剪贴板
- c++ - 从外部 API 比较两个相同类型的结构
- java - 如何恢复我的导入/接口并修复我的项目?
- javascript - 带有条件语句的嵌套过滤器,没有像我想要的那样显示
- java - 如何在 Servlet 响应中换行
- javascript - 有没有更有效的方法来排序这个数组?
- algorithm - 如何求解迭代替换方程?