gpt4 book ai didi

python - 二维 numpy 数组 - 检查所有相邻项是否相等

转载 作者:行者123 更新时间:2023-11-28 20:21:44 27 4
gpt4 key购买 nike

我从一个 nxm bool 数组开始,它定义了区域——如果它在区域内则为 true,否则为 false。例如:

r = np.array([[ 0,  0,  1,  1,  1],
[ 0, 1, 1, 0, 0],
[ 0, 1, 1, 1, 0],
[ 1, 1, 1, 0, 0],
[ 1, 1, 0, 0, 0]])

区域之间的线可以定义为 n-1 x m-1 数组,表示每组四个值之间的一个“点”。如果所有 4 个周围值都相同,则您不在区域之间的边缘。如果这 4 个值中的任何一个不同,那么你就是。对于上面的 r:

l = np.array([[ 1, 1, 1, 1],
[ 1, 0, 1, 1],
[ 1, 0, 1, 1],
[ 0, 1, 1, 0]])

关于如何有效地完成这件事有什么想法吗?我试过在两个方向上做差异,但这加倍了。有二维差异功能吗?还有其他方法吗?

最佳答案

这将对被 True 包围的 points 进行测试,

tmp = r[1:] & r[:-1]
l = np.logical_not(tmp[:, 1:] & tmp[:, :-1])

然后你可以用同样的方法对被False包围的做测试并组合它们,

r = np.logical_not(r)
tmp = r[1:] & r[:-1]
l &= np.logical_not(tmp[:, 1:] & tmp[:, :-1])

print l.astype(int)
# [[1 1 1 1]
# [1 0 1 1]
# [1 0 1 1]
# [0 1 1 0]]

关于python - 二维 numpy 数组 - 检查所有相邻项是否相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26662055/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com