假设我有一个一维数组,我想用移动窗口进行采样,在窗口内将每个元素除以第一个元素。
例如,如果我有
我现在做的基本上是一个for循环。
例如,如果我有
[2, 5, 8, 9, 6]
和窗口大小为3,结果将是:[[1, 2.5, 4],
[1, 1.6, 1.8],
[1, 1.125, 0.75]].
我现在做的基本上是一个for循环。
import numpy as np
arr = np.array([2., 5., 8., 9., 6.])
window_size = 3
for i in range(len(arr) - window_size + 1):
result.append(arr[i : i + window_size] / arr[i])
当数组很大时,它会变得非常慢,我想知道是否有更好的方法?我猜想无法避免O(n^2)的复杂度,但是NumPy可能有一些我不知道的优化。