如何优化平均数据的 numpy 代码

问题描述 投票:0回答:1

我目前正在尝试优化 Python 中的一个函数。

是否有巧妙地使用 Numpy 来在更短的时间内获得结果?

我的数据形状为 (30000,18000),window_size 为 2。

import time
import numpy as np
def denoise(data, window_size, axis=0):
    output = np.zeros((data.shape[axis], data.shape[axis+1] // window_size))
    i = 0
    for k in range(0, data.shape[axis + 1] - window_size, window_size):
        output[:,i] = np.sum(data[:,k:k+window_size],axis=axis+1)/window_size
        i = i+1
    return output

data = np.random.random((30000,18000))
start = time.time()
output = denoise(data,2)
print(f'Elapsed time {time.time()-start} s')
python-3.x numpy optimization
1个回答
0
投票

您可以对当前的方法进行微小但显着的改进。

n = data.shape[axis+1]
output = np.zeros((data.shape[axis], n // window_size))
i = 0
for k in range(0, window_size):
    output += data[:, k:n:window_size]
return output/window_size
© www.soinside.com 2019 - 2024. All rights reserved.