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

如何用Python Numpy将一维数组转换为指定二维数组?

高效生成Numpy滑动窗口二维矩阵的方法

给定一维Numpy数组:

arr = np.array([0, 1, 2, 3, 4, 5])

想要生成每3个连续元素组成的二维矩阵,不用for循环的话,有两种高效的Numpy原生方法:

方法一:使用sliding_window_view(推荐,Numpy 1.20+)

这是Numpy官方推荐的滑动窗口实现,安全易用,直接基于内存视图生成结果,不会额外复制数据,效率拉满:

import numpy as np

arr = np.array([0, 1, 2, 3, 4, 5])
result = np.lib.stride_tricks.sliding_window_view(arr, window_shape=3)
print(result)

运行后输出:

[[0 1 2]
 [1 2 3]
 [2 3 4]
 [3 4 5]]

方法二:使用as_strided(兼容旧版本Numpy)

如果你的Numpy版本低于1.20,可以用as_strided手动构造滑动窗口,但需要自行计算形状和步长,注意不要越界访问内存:

import numpy as np

arr = np.array([0, 1, 2, 3, 4, 5])
window_size = 3
n_windows = arr.size - window_size + 1

result = np.lib.stride_tricks.as_strided(
    arr,
    shape=(n_windows, window_size),
    strides=(arr.strides[0], arr.strides[0])
)
print(result)

输出和上面一致。

这两种方法都远优于for循环,尤其是处理大数组时,能充分利用Numpy的向量化运算优势,避免Python循环的性能瓶颈。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 16:20:21