通過滑動窗口重複Numpy數組

吉萬

從以下形狀數組(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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用 matplotlib FuncAnimation 顯示 numpy 數組的滑動窗口

在軸 = 0 的 2D NumPy 數組上滑動窗口

Pandas 通過在時間戳字段上滾動窗口函數進行分組

NumPy 通過 astype 轉換二維數組中的混合數據類型

如何通過索引條件正確屏蔽 numpy 2D 數組?

通過匹配項將對像數組中的鍵/值移動到其他數組

有沒有辦法通過數組移動div?

通過匹配 id 屬性過濾數組

滑動窗口算法計算一個數組模 p 的所有 k 元素連續子數組乘積的列表

如何通過另一個數組編號鍵過濾數組鍵

通過給每個數組一個唯一的標籤來對布爾 numpy 數組進行直方圖

通過指向數組的指針返回結果

如何通過二維數組索引使用?

通過匹配 ID 合併 3 個數組

通過 mongoose 將項目插入 mongo 數組

通過堆疊列和重複其他列來組織用於分析的數據框

使用動態值通過擴展運算符將對象添加到數組

初始化二維字符串動態數組並通過引用傳遞

如何通過另一個數組屬性組合和過濾數組屬性

通過減少和數組返回對像數組

Swift UITableView:如何通過滑動跳轉到下一個單元格

如何通過放入 scanf 的數字數量來定義數組的限制?

numpy可以通過將一維數組中的n個元素與另一個一維數組的每個元素相加來創建n個數組嗎?

java - 如何通過更改數組y的值將數組x更改為數組y的值?

如何解析數組的JSON數組並通過名稱引用內部數組的成員?

通過與另一個數組中的值進行比較來過濾嵌套數組

通過子字符串過濾或減少字符串數組

在 JavaScript 中通過鍵和嵌套值過濾對像數組

當步長大於 1 時,通過數組切片和 numpy.diff 替換 python 中的 for 循環