假设我有一些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")
scipy.ndimage
模块有一个center_of_mass
函数,还有一个label
函数用于查找聚类。 - Jaimenp.meshgrid
时设置sparse=True
,并将img.sum()
存储在辅助变量中以便重复使用而不是计算两次,我认为您的代码执行效率不会比Scipy差。我认为您也不需要.astype(float)
这个操作,因为您正在除以numpy标量,而不是Python整数,但我可能错了... - Jaime