快速小波变换/数据附加

2024-04-25 13:02:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在对数据进行一维小波变换。我怎样才能让这更快? 我有140万个样本和32个特征。你知道吗

def apply_wavelet_transform(data):
    ca,cd=pywt.dwt(data[0,:],'haar')
    for i in range(1,data.shape[0]):
        ca_i,__=pywt.dwt(data[i,:],'haar')
        ca=np.vstack((ca,ca_i))
    return ca

考虑到我不关心内存的使用,而关心执行速度。你知道吗


Tags: 数据fordatadefcdtransform特征ca
1条回答
网友
1楼 · 发布于 2024-04-25 13:02:00

这是一个常见的错误。您不希望一次向一个数组追加一行,因为每次迭代都需要复制整个数组。复杂性:O(N**2)。最好将中间结果保存在一个列表中,并在最后形成数组。这更好,因为列表不要求它们的元素在内存中是连续的,所以不需要复制。你知道吗

def apply_wavelet_transform(data):
    results_list = []
    for row in data:
        ca, cd = pywt.dwt(row, 'haar')
        results_list.append(ca)
    result = np.array(results_list)
    return result

相关问题 更多 >