You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用cupy.lib.stride_tricks.as_strided实现滑动窗口报错,求解决

解决CuPy as_strided生成滑动窗口的报错问题

报错原因分析

  • 第一个AttributeError:as_strided仅接受CuPy数组作为输入,你最初传入的Python列表没有shape属性,改成cp.array是正确的修正方向。
  • 第二个TypeError:shape参数不能设为None,必须明确指定目标数组的维度;strides需要是可迭代的元组,对应每个维度的字节步长,不能传入单个整数。

正确实现代码

要生成7×2的滑动窗口二维数组,正确的as_strided用法如下:

import cupy as cp

x = cp.array([4,2,1,1,1,2,3,4])
window_size = 2

# 计算目标形状:窗口数量 = 原数组长度 - 窗口大小 + 1
target_shape = (x.size - window_size + 1, window_size)
# 计算步长:每个维度的步长为单个元素的字节数,实现滑动1个元素的窗口
target_strides = (x.itemsize, x.itemsize)

y = cp.lib.stride_tricks.as_strided(x, shape=target_shape, strides=target_strides)
print(y)
print(y.shape)  # 输出 (7, 2)

更安全的替代方案

CuPy 10.0+版本提供了和NumPy一致的sliding_window_view,无需手动计算步长和形状,更不容易出错,性能也接近as_strided:

import cupy as cp

x = cp.array([4,2,1,1,1,2,3,4])
y = cp.lib.stride_tricks.sliding_window_view(x, window_size=2)
print(y.shape)  # 输出 (7, 2)

内容的提问来源于stack exchange,提问作者tibibou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 17:39:24