[英]Applying np.where in a sliding window
我有一個True
/ False
值數組,我想將其用作另一個不同形狀數組的重復掩碼。
import numpy as np
mask = np.array([[ True, True],
[False, True]])
array = np.random.randint(10, size=(64, 64))
我想在滑動窗口中應用這個掩碼,類似於數組上的where
函數。 目前,我使用np.kron
簡單地重復掩碼以匹配數組的維度:
layout = np.ones((array.shape[0]//mask.shape[0], array.shape[1]//mask.shape[1]), dtype=bool)
mask = np.kron(layout, mask)
result = np.where(mask, array, 255) # example usage
是否有任何優雅的方法可以執行相同的操作,而無需將mask
重復為與array
相同的形狀? 我希望會有某種滑動窗口技術或卷積/相關性。
將廣播與重塑一起使用,這樣您就不需要為重復的mask
額外的內存:
x, y = array.shape[0]// mask.shape[0], array.shape[1] // mask.shape[1]
result1 = np.where(mask[None, :, None],
array.reshape(x, mask.shape[0], y, mask.shape[1]),
255).reshape(array.shape)
您可以嘗試使用np.tile
:
np.where(np.tile(mask, (a//m for a,m in zip(array.shape, mask.shape))), array, 255)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.