1 回答

TA貢獻(xiàn)1712條經(jīng)驗(yàn) 獲得超3個(gè)贊
這是使用 strides 的更快方法(請(qǐng)注意,view_as_windows在底層使用 numpy strides。如果您必須嚴(yán)格使用 numpy,只需使用 numpy 包中的 strides 即可。了解 numpy 中的等效實(shí)現(xiàn)view_as_windows):
from skimage.util import view_as_windows
out = view_as_windows(new_img, (Hk,Wk))
out = np.einsum('ijkl,kl->ij',out,H)
輸出:
out:?
[[? 0? -5 -10 -19]
?[-10? -7? -2 -18]
?[? 5? -7? 11? ?7]
?[-12? -9? 11 -18]]
輸入的時(shí)間:
#Method 1
[*] process time : 0.000615
#Method 2
[*] process time : 0.000475
#proposed method in this answer
[*] process time : 0.000348
較大陣列的計(jì)時(shí)使用benchit:
(方法2對(duì)于較大的數(shù)組有錯(cuò)誤)
方法 3 比方法 1 快幾個(gè)數(shù)量級(jí)。
添加回答
舉報(bào)