[英]How to get Boundaries of an 'numpy.array'?
如果我有一個d
維np.array
,我怎樣才能得到邊界的np.array
?
例如,在2d,
test = np.arange(16).reshape((4, 4))
test
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
現在我想獲得界限
array([[ True, True, True, True],
[ True, False, False, True],
[ True, False, False, True],
[ True, True, True, True]])
如果效率很高並適用於任意數量的維度,但它必須至少工作3.數組不一定是超立方體,但可能是超立方體:所有維度中的網格點數量不一定相同,不同於這個例子。
對於形狀數組(4, 5, 6)
,預期輸出為
array([[[ True, True, True, True, True, True],
[ True, True, True, True, True, True],
[ True, 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, False, False, True],
[ True, False, False, False, False, True],
[ True, False, False, False, False, True],
[ True, True, True, True, True, True]],
[[ True, True, True, True, True, True],
[ True, False, False, False, False, True],
[ True, False, False, False, False, True],
[ True, False, False, 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, True],
[ True, True, True, True, True, True],
[ True, True, True, True, True, True]]], dtype=bool)
你可以通過構造一個切片元組來做到這一點,例如
import numpy as np
def edge_mask(x):
mask = np.ones(x.shape, dtype=bool)
mask[x.ndim * (slice(1, -1),)] = False
return mask
x = np.random.rand(4, 5)
edge_mask(x)
# array([[ True, True, True, True, True],
# [ True, False, False, False, True],
# [ True, False, False, False, True],
# [ True, True, True, True, True]], dtype=bool)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.