有没有像matlab中的滑动窗口函数,但是对于python?

问题描述 投票:0回答:1

我需要一个从方形窗口中的二维数组中选择所有数据的函数,但我想在 Python 中执行此操作。有什么具体的功能吗?

median_x_array = Median_coords_3d_array[:, :, 0] # 提取 x 坐标

窗口大小=3 median_x_neighbors = []

padded_array = np.pad(median_x_array, pad_width = 1, mode = 'wrap')

对于范围内的 i(pagged_array.shape[0] - window_size + 1):

for j in range(padded_array.shape[1] - window_size + 1):
    
    subarray = padded_array[i:i+window_size, j:j+window_size]
    
    
    flattened_subarray = subarray.flatten()
    
    
    median_x_neighbors.append(flattened_subarray)
python multidimensional-array sliding-window
1个回答
0
投票

这可以使用 numpy.lib.stride_tricks.sliding_window_view 实现。您可以将窗口视图设置为形状

(3, 3)
并将函数应用于每个切片:

import numpy as np
from numpy.lib.stride_tricks import sliding_window_view # New import

median_x_array = np.random.rand(10, 10) # an example dummy array
window_size = 3
median_x_neighbors = []
padded_array = np.pad(median_x_array, pad_width = 1, mode = 'wrap')
rolling_views = sliding_window_view(padded_array, (window_size), window_size)) # put a sliding view on top of the array
for i in rolling_views[0, :, :]: # access the views one at a time
    median_x_neighbors.append(i.flatten())
© www.soinside.com 2019 - 2024. All rights reserved.