假设我有一个1d数组,我想要的是用移动窗口进行采样,并在窗口内将每个元素除以第一个元素.
例如,如果我有[2, 5, 8, 9, 6]
一个窗口大小为3,结果将是
[[1, 2.5, 4],
[1, 1.6, 1.8],
[1, 1.125, 0.75]].
Run Code Online (Sandbox Code Playgroud)
我现在正在做的基本上是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])
Run Code Online (Sandbox Code Playgroud)
等等
当阵列很大时它很慢,我想知道是否有更好的方法?我想O(n ^ 2)复杂性没有办法,但也许numpy有一些我不知道的优化.