[英]creating 2d mask array and applying on a 2d array
這是我的目標
在我的解釋中,我從1開始計算行數和列數。
給定大小為784x49的2d數組-我想對其進行處理,以使在第1列-1,2,3,4,29,30,31,32,57,58,59,60,85,86,7行, 88個元素為非零,其余元素為零。 類似地,第2列-第5、6、7、8、33、34、35、36、61、62、63、64、89、90、91、92行為非零,其余均為零。 如果您將784假定為28x28圖像,那么您可以理解,我的49列中的每一個都正在訪問圖像的4x4區域,但它們並不重疊。
我正在考慮創建一個尺寸為784x49的2d蒙版,其中49x16(= 784)個元素設置為未蒙版,而其他元素被蒙版。因此,我可以在784x49輸入數組上重復使用此蒙版以快速在2d數組中設置零。
我的偽代碼是
first time = 0;
for x in range(0,49) :
initialize a 2D array 'one_column_at_a_time' of 28x28 inputs with all element set to TRUE ;
one_column_at_a_time[x/7:(x/7)+4,(x%7)*4:(x%7)*4+4]=FALSE ;
reshape one_column_at_a_time to 784x1;
if (first time == 0):
first time = 1 ;
full_784x49 = one_column_at_a_time;
else
full_784x49 = vertical_stack(full_784x49,one_column_at_a_time);
我無法找出專門用於創建蒙版2d numpy數組的相關函數。我知道np.vstack,np.reshape,np.zeros和np.ones。
謝謝。
這大概就是您想要的嗎?
>>> import numpy as np
>>> n = 3 # use 7
>>> k = 2 # use 4
>>> mask = (np.clip(np.add.outer(-np.arange(n*n), np.arange(n*n*k*k) // k), -1, k*n + 1) % n).astype(bool)
>>> mask
array([[False, False, True, True, True, True, False, False, True,
True, True, True, False, False, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True],
[ True, True, False, False, True, True, True, True, False,
False, True, True, True, True, False, False, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True],
[ True, True, True, True, False, False, True, True, True,
True, False, False, True, True, True, True, False, False,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True],
[ True, True, True, True, True, True, False, False, True,
True, True, True, False, False, True, True, True, True,
False, False, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True],
[ True, True, True, True, True, True, True, True, False,
False, True, True, True, True, False, False, True, True,
True, True, False, False, True, True, True, True, True,
True, True, True, True, True, True, True, True, True],
[ True, True, True, True, True, True, True, True, True,
True, False, False, True, True, True, True, False, False,
True, True, True, True, False, False, True, True, True,
True, True, True, True, True, True, True, True, True],
[ True, True, True, True, True, True, True, True, True,
True, True, True, False, False, True, True, True, True,
False, False, True, True, True, True, False, False, True,
True, True, True, True, True, True, True, True, True],
[ True, True, True, True, True, True, True, True, True,
True, True, True, True, True, False, False, True, True,
True, True, False, False, True, True, True, True, False,
False, True, True, True, True, True, True, True, True],
[ True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, False, False,
True, True, True, True, False, False, True, True, True,
True, False, False, True, True, True, True, True, True]])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.