假设我有一些 numpy 数组(在这种情况下,它代表一个 100x100 的二进制图像)......
img=np.random.randint(0,2,(100,100)).astype(numpy.uint8)
如何最好地确定数组中 1 值的“平均位置”?例如,如果数组中有一个 1 的簇,我想找到该簇的中心。
我看到你也标记了这个numpy
,所以我会这样做:
x = range(0, img.shape[0])
y = range(0, img.shape[1])
(X,Y) = np.meshgrid(x,y)
x_coord = (X*img).sum() / img.sum().astype("float")
y_coord = (Y*img).sum() / img.sum().astype("float")
那会给你加权平均中心。
如果您希望对图像中的每个 1 的集群进行此操作,我建议您使用连接的组件来掩盖您感兴趣的集群。对尽可能多的集群重复此过程可能不是一个好主意,而是计算所有同一数组遍历中的聚类平均值。