如何使用numpy.pad为1维numpy数组生成可变填充的无循环2维滑动矩阵
实现代码
完全满足约束要求:无任何显式循环、未硬编码k值、核心补零逻辑通过numpy.pad实现,支持任意合法输入的arr和k值。
import numpy as np # 可自定义输入参数 arr = [1, 2, 3, 4] k = 4 arr_np = np.array(arr) n = arr_np.size # 核心补零逻辑,使用numpy.pad给数组前后各补k-1个零 padded_arr = np.pad(arr_np, pad_width=(k-1, k-1), mode='constant', constant_values=0) # 向量化生成滑动窗口,无循环构造二维数组 result = np.lib.stride_tricks.sliding_window_view(padded_arr, window_shape=n + k - 1) # 翻转行顺序匹配输出要求 result = np.flip(result, axis=0) # 输出验证 print(result)
输出结果
和要求的示例完全一致:
[[1 2 3 4 0 0 0] [0 1 2 3 4 0 0] [0 0 1 2 3 4 0] [0 0 0 1 2 3 4]]
内容的提问来源于stack exchange,提问作者HelloGR
相关产品推荐
相关产品推荐

