首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sliding_window_view输出维度

sliding_window_view输出维度
EN

Stack Overflow用户
提问于 2021-05-30 19:11:05
回答 1查看 58关注 0票数 0

考虑以下数组:

代码语言:javascript
复制
arr = np.arange(15).reshape(5,3)
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]
 [12 13 14]]

您可以将第0维视为给定时间步长的时间和第1维。我想在它上面创建一个滚动窗口,即随着时间的推移,长度为3的序列。

呼叫

代码语言:javascript
复制
np.lib.stride_tricks.sliding_window_view(arr, (3,3))

结果:

代码语言:javascript
复制
[[[[ 0  1  2]
   [ 3  4  5]
   [ 6  7  8]]]
 [[[ 3  4  5]
   [ 6  7  8]
   [ 9 10 11]]]
 [[[ 6  7  8]
   [ 9 10 11]
   [12 13 14]]]]

正如我们所料。

唯一让我困惑的是它的形状,它是(3,1,3,3),而我最初预计它是(3,3,3)。我想这可能是关于应用窗口的轴,但在修改轴参数时,我无法获得所需的形状。有人能解释这个吗?有没有其他方法可以在不重塑结果数组的情况下获得3阶形状?

EN

回答 1

Stack Overflow用户

发布于 2021-05-30 19:43:23

sliding_window_view将始终返回比窗形状高2维的视图:

在末尾插入滑动窗口尺寸,并根据滑动窗口大小的要求修剪原始尺寸

但是,在本例中,假设对于给定的窗口大小,y上的窗口数量将为1,请使用axis=(0,0)并从返回的数组中获取第一个值,以获得所需的结果,而无需进行额外的整形或重新调整:

代码语言:javascript
复制
arr = np.arange(15).reshape(5, 3)
b = np.lib.stride_tricks.sliding_window_view(arr, (3, 3), axis=(0, 0))[0]

b

代码语言:javascript
复制
[[[ 0  3  6]
  [ 3  6  9]
  [ 6  9 12]]

 [[ 1  4  7]
  [ 4  7 10]
  [ 7 10 13]]

 [[ 2  5  8]
  [ 5  8 11]
  [ 8 11 14]]]
# b.shape (3, 3, 3)

代码语言:javascript
复制
sliding_window_view(arr, (3, 3), axis=(0, 0)).shape  # (1, 3, 3, 3)
sliding_window_view(arr, (3, 3), axis=(0, 0))[0].shape  # (3, 3, 3)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67760470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档