对于2d numpy数组,例如,
import numpy as np
a = np.random.rand(5, 4)
a
a
看起来像
array([[0.92576936, 0.41860519, 0.26446948, 0.31691141],
[0.31797497, 0.2044637 , 0.20939504, 0.54034017],
[0.85781227, 0.40367301, 0.40215265, 0.95902499],
[0.15700837, 0.10680368, 0.61971475, 0.35586694],
[0.25211967, 0.98171005, 0.60740472, 0.89452886]])
显然,每个元素都有邻居。对于边界中的元素,它有3个或5个邻居。对于中心元素,它有8个。因此,是否有一种高效而优雅的方法通过仅选择元素及其邻居合计大于0.5来屏蔽a
?这意味着,不要考虑孤立大于0.5的元素,其邻居都小于0.5。
对于a
,预期的输出掩码为
array([[False, False, False, False],
[False, False , False, True],
[False, False, False, True],
[False, False, True, False],
[False, True, True, True]])
1条答案
按热度按时间6tr1vspr1#
您可以使用2D卷积:
核函数的设计是,每个中心值〉0.5的核数为10,每个周围值〉0.5的核数为1,卷积计算总和。因此,如果总和〉10,就知道该值〉0.5,因此它至少有一个邻居。
输出量:
更经典的选择