我有兩個音樂文件:一個是無損的,有一點聲音缺口(此時它只是沉默,但它可以是任何:正弦或只是一些噪音)一個MP3:找到numpy陣列之間最小差異的位置
In [1]: plt.plot(y[:100000])
Out[1]:
In [2]: plt.plot(y2[:100000])
Out[2]:
這個名單是相似但不完全相同,所以我需要削減這一差距,在另一個列表中找到第一個出現的具有最低差異錯誤的列表。
下面是我的解決方案(5.7065秒):
error = []
for i in range(25000):
y_n = y[i:100000]
y2_n = y2[:100000-i]
error.append(abs(y_n - y2_n).mean())
start = np.array(error).argmin()
print(start, error[start]) #23057 0.0100046
有沒有解決這個任何Python的方式?
編輯: 計算特殊點之間的平均距離後(例如在數據== 0.5)我減少25000搜索領域到2000年這給我的0.3871s合理時間:
a = np.where(y[:100000].round(1) == 0.5)[0]
b = np.where(y2[:100000].round(1) == 0.5)[0]
mean = int((a - b[:len(a)]).mean())
delta = 1000
error = []
for i in range(mean - delta, mean + delta):
...
如果我們不比較整個數組而只比較其中最獨特的部分,該怎麼辦? –