Python在2dnumpy数组中查找特定值的最大面积的有效方法

2024-06-02 07:35:05 发布

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

我有一个2D numpy数组,其中有些值是零,有些不是。我试图找到一种有效的方法来找到数组中最大的一组0(通过返回0的数量,以及中心在哪里的大致概念)

例如,在这个数组中,我想找到9的丛,中心是(3,4):

[[ 1, 1, 1, 0, 0 ],
 [ 1, 0, 1, 1, 0 ],
 [ 1, 1, 1, 1, 1 ],
 [ 1, 1, 0, 0, 0 ],
 [ 1, 1, 0, 0, 0 ],
 [ 1, 1, 0, 0, 0 ]]

在numpy或scipy中有没有一种好的矢量化方法来完成类似的任务?在

团块的形状大致是圆形的,而且没有洞。在

scipy的ndimage.label()做了一些与此类似的事情,但并不是我所追求的。我觉得numpy.where()和{a3}可能有帮助,但不确定如何有效地使用它们来解决这个问题。在


Tags: 方法numpy概念数量scipy数组圆形where
1条回答
网友
1楼 · 发布于 2024-06-02 07:35:05

你就快到了,你只需要把ndimage.label和{}结合起来:

import numpy as np
from scipy import ndimage

array = np.random.randint(0, 3, size=(200, 200))

label, num_label = ndimage.label(array == 0)
size = np.bincount(label.ravel())
biggest_label = size[1:].argmax() + 1
clump_mask = label == biggest_label

一旦你有了clump_mask,你就可以计算出质心,或者用其他方法得到中心。在

相关问题 更多 >