從以下形狀數組(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 原語?
您可以使用 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()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句