ました私のユースケースの場合)、あなたのケースで使用することができます:
def mask_borders(arr, num=1):
mask = np.zeros(arr.shape, bool)
for dim in range(arr.ndim):
mask[tuple(slice(0, num) if idx == dim else slice(None) for idx in range(arr.ndim))] = True
mask[tuple(slice(-num, None) if idx == dim else slice(None) for idx in range(arr.ndim))] = True
return mask
としては、すでに(True
)これは国境がマスクされているmask
を作成し、返し言った:
>>> mask_borders(np.ones((5,5)))
array([[ True, True, True, True, True],
[ True, False, False, False, True],
[ True, False, False, False, True],
[ True, False, False, False, True],
[ True, True, True, True, True]], dtype=bool)
>>> # Besides supporting arbitary dimensional input it can mask multiple border rows/cols
>>> mask_borders(np.ones((5,5)), 2)
array([[ True, True, True, True, True],
[ True, True, True, True, True],
[ True, True, False, True, True],
[ True, True, True, True, True],
[ True, True, True, True, True]], dtype=bool)
「国境」の値を取得するには、これはあなたの配列にboolean indexingを適用する必要があります
>>> arr = np.array([[4,5,6,7], [2,2,6,3], [4,4,9,4], [8,1,6,1]])
>>> arr[mask_borders(arr)]
array([4, 5, 6, 7, 2, 3, 4, 4, 8, 1, 6, 1])
は、注文事項をしていますか? –
いいえ、運良く私の場合はありません:) –