使用numpy`AS_STRIDED“函数创建补丁,图块,滚动或滑动窗口

问题描述 投票:0回答:1
今天早上,请稍等片刻,寻找一个广义问题,以指向有关

as_strided

和/或如何制作广义窗口功能的问题。  在如何(安全地)在机器学习,卷积,图像处理和/或数值集成的数组中,(安全)创建补丁,滑动窗口,滚动窗口或视图似乎有很多问题。 

我正在寻找一个可以接受windowstep

axis

参数的广义函数,然后返回
as_strided
视图以超过任意维度。  我会在下面给出答案,但是如果有人可以做出更有效的方法,我很感兴趣,因为我不确定使用
np.squeeze()
是最好的方法,我不确定我的
assert
语句是否会使功能安全足以写入最终的视图,我不确定如何处理不在上升顺序的边缘情况。

勤奋
我能找到的最广泛的功能是@eickenberg(以及显然是等效的)撰写的,但这些功能在网上的记录不佳,并且无法在更少的窗口上进行窗口轴比原始数组中的轴(例如,这个问题要求仅在一个轴上有一定尺寸的窗口)。  通常,问题也需要一个只能答案。 
@@divakar为1-D输入创建了一个广义的

axis

功能Herey,但是高维输入需要更多的护理。 我在3D输入方法上制作了一个裸露的骨头2D窗口,但这不是很可扩展。

Edit2020年1月:更改了从列表到发电机的估计返回以保存内存。
Edit2020年10月:将发电机放在单独的功能中,因为混合发电机和sklearn.feature_extraction.image.extract_patches
语句无效。
我到目前为止的食谱是:
skimage.util.view_as_windows 一些测试用例:
numpy

在这里我尝试柔韧的瓷砖:
numpy
,例如,它可用于实现nd max-pooling:

arrays numpy convolution
1个回答
15
投票

使用维度必须是连续的。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.