python - ndarrays 的滚动窗口
问题描述
我有一个形状为 (30,2,2) 和 2000 个元素的 n 维数组。所以我的最终数组的形状是 (2000, 30, 2, 2)。我现在想在一个新数组中堆叠滚动 200 个元素。所以我假设我的最终数组看起来像 (1801, 200, 30, 2, 2) ,其中 1800 中的每个元素都有 200 个 (30,2,2) 数组的样本。你如何在 python 中创建这个滚动窗口。我曾尝试使用 vstack,但不完全确定如何达到我想要的结果。
import numpy as np
input = np.zeros((2000, 30, 2, 2))
desired_output = np.zeros((1801, 200, 30, 2, 2))
解决方案
我们可以利用np.lib.stride_tricks.as_strided
basedscikit-image's view_as_windows
来获得滑动窗口,从而在这里解决我们的案例。有关使用based 的更多信息as_strided
view_as_windows
。
输出将是输入数组的视图,因此,它在运行时几乎是免费的。实施将是 -
from skimage.util.shape import view_as_windows
out = view_as_windows(input,(200,1,1,1))[...,0,0,0].transpose(0,4,1,2,3)
推荐阅读
- windows-installer - 将 .msi 转换为 .exe 的最佳工具包是什么?
- ios - 观看 OS 项目文件(处理不同目的的单独类)
- string - Haskell中的解析功能,制作地图功能时遇到麻烦
- android - 如何从android studio将参数发送到URL的html正文?
- python - Pyspark没有打开jupyter
- android - 为什么 MotionLayout 折叠动画不使用 NestedScrollView 自动完成?
- java - 如何在 Selenium Webdriver 的控制台上针对单选按钮显示文本?我应该使用什么方法?
- ruby-on-rails - 在运行索引迁移时,Rails 是否会索引现有记录?
- powerbi - DAX 与 PowerQuery 中的 Power BI 计算列
- javascript - 如何仅使用 css 删除 django 表单中的默认值“0”