從以下形狀陣列(6, 3):
>>> arr
[
[1, 0, 1],
[0, 0, 2],
[1, 2, 0],
[0, 1, 3],
[2, 2, 1],
[2, 0, 2]
]
我想根據 的滑動視窗重復這些值n=4,給出一個新的形狀陣列(6-n-1, n, 3):
>>> new_arr
[
[
[1, 0, 1],
[0, 0, 2],
[1, 2, 0],
[0, 1, 3]
],
[
[0, 0, 2],
[1, 2, 0],
[0, 1, 3],
[2, 2, 1]
],
[
[1, 2, 0],
[0, 1, 3],
[2, 2, 1],
[2, 0, 2]
]
]
使用回圈相對簡單,但是在初始陣列中有幾百萬個值(而不是本示例中的 6 個)時,它會變得非常慢。
有沒有更快的方法來new_arr使用 Numpy 原語?
uj5u.com熱心網友回復:
您可以使用 NumPy,特別是這個函式(僅 NumPy >= 1.20.0):
from numpy.lib.stride_tricks import sliding_window_view
new_arr = sliding_window_view(arr, (n, arr.shape[1])).squeeze()
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/365826.html
