python - 在 numpy 数组中运行 max-min 的窗口。
问题描述
我正在尝试在 numpy 数组上执行“运行最大最小窗口”,以便对于给定的窗口大小,该函数返回该窗口的最大值和最小值之间的距离。
我还想确定窗口每个“跳过”的长度。
例如:
如果x_array = np.array([3,5,1,8,3,5,2,2])
大小2
和跳过长度的运行窗口2
应该导致:
[2, 7, 2, 0]
因为第一个窗口是3, 5
,第二个窗口是1,8
等等。
当然可以使用简单的 for 循环来完成,但我正在努力思考更好的解决方案。
任何帮助,将不胜感激。
解决方案
从这个答案中采用一点,你可以做的是
from numpy.lib.stride_tricks import as_strided
def running_max_min(a, window_size, step_size):
nrows = (a.size - window_size)//step_size + 1
n = a.strides[0]
s = as_strided(a, shape=(nrows, window_size), strides=(step_size*n, n))
return s.ptp(1)
例如,
In [22]: running_max_min(x_array, 2, 2)
Out[22]: array([2, 7, 2, 0])
推荐阅读
- java - 如何在将数据发送到 Firebase 数据库之前对其进行加密?
- python - 在python中使用一个testclass函数到另一个testclass
- r - 错误:参数数量不正确 (5),“rlang_quos_interp”应为 4
- javascript - OwlCarousel2 显示空白幻灯片,而其他所有 HTML 标记都显示正常
- date - 谷歌表 - 脚本/条件格式 > 根据日期设置列的背景颜色 1/今天之前 = 红色 2/今天 = 黄色
- java - 已删除的实例传递给合并
- jsp - jsp 页面显示 javax.servlet.ServletException: java.lang.OutOfMemoryError: Java heap space
- r - Creating all possible combinations of items and doing calculations simultaneously
- python - Django 显示的日期时间与系统日期时间不同
- android - 如何展示原生广告?