【发布时间】:2018-01-04 23:35:57
【问题描述】:
如果我有一个d 维度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)
【问题讨论】:
-
“每个维度的网格点数不一定相同”那么它不是一个NumPy数组,对吧?
-
@jdehesa 现在清楚了吗?我的意思是
np.arange(20).reshape((4, 5))也是一个潜在的用例。 -
啊抱歉我现在明白了,我以为你的意思是某种锯齿状数组之类的。