首页 > 解决方案 > numpy 通过矢量化替换 nD 数组中 2D 切片上的 for 循环

问题描述

我正在玩弄时间序列数据,并从原始 X x N ndarray(2 X 特征,100 N 帧作为虚拟起点)我使用 np.lib.stride_tricks.as_strided 创建(N-2)个连续的形状窗口(2,3) 即

newShape = [98,2,3]
newStride = [8,800,8]
windowView = np.lib.stride_tricks.as_strided(x = data,shape = newShape, strides = newStride)

我正在寻找的是一种在所有窗口上应用函数的方法,例如在每个窗口内的特征/s 上计算直方图/2d。我知道 np.apply_over_axes 和 np.apply_along_axis 都不会起作用,因为函子在轴上不是可交换的(例如 sum)。

我读过这篇Numpy Vectorized Function Over Successive 2d Slices)帖子,其中答案使用列表理解。
但是因为我真的很讨厌 numpy 的循环,而这个问题是 6 年前的问题,numpy 中是否有任何新(或旧)功能可以解决问题?

标签: pythonarraysnumpyvectorization

解决方案


推荐阅读