小编use*_*455的帖子

如何对numpy数组进行采样并有效地对每个样本执行计算?

假设我有一个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有一些我不知道的优化.

python performance numpy vectorization pandas

4
推荐指数
1
解决办法
194
查看次数

标签 统计

numpy ×1

pandas ×1

performance ×1

python ×1

vectorization ×1