查找1D numpy数组中的孤岛数

2024-06-16 12:36:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在一维二进制numpy数组中找到孤岛(连接的1的组)的数量。我已经搜索了一段时间,但似乎只能找到矩阵的解,所以很好奇是否有更快的alg

例如:

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

result = find_islands(x)

在这里,结果将是2。岛屿指数并不重要。输入数组的大小始终相同


Tags: numpy数量np二进制矩阵数组resultfind
1条回答
网友
1楼 · 发布于 2024-06-16 12:36:02

你可以数岛屿的起点。孤岛的起点为0,后跟1或仅1作为第0个元素。你可以这样计算,因为numpy将1和0视为真和假

def find_islands(x):
    return np.sum(x[1:] & ~x[:-1]) + x[0]

对于提供的测试用例,包括来自注释的测试用例,它似乎是有效的

find_islands([0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0])  > 2 
find_islands([1, 0, 1])  > 2
find_islands([0, 1, 0])  > 1
find_islands([1, 1, 0, 1])  > 2 

相关问题 更多 >