一个numpy数组的质心,如何使其更简洁?

3
据我所知,对于numpy来说,一次处理一个数组的每一行是不明智的(参考链接)。广播显然是首选方法。那么,如何将形状为(N,3)的数据转换为质心?以下是我正在使用的“低效方法”。虽然这种方法可以工作,但我怀疑在大数据量N的情况下会影响性能:
CM = R.sum(0)/R.shape[0]
for i in xrange(R.shape[0]): R[i,:] -= CM

2
可能有点晚了,不过 scipy.ndimage.measurements.center_of_mass 可能是一个有用的函数。 - heltonbiker
2个回答

9

8

尝试

R -= R.sum(0) / len(R)

相反,广播将自动执行正确的操作。


那么错误在于试图将CM数组硬塞到减法中,而不是一次性解决它? - Hooked
@Hooked:你也可以这样做CM = R.sum(0) / len(R); R -= CM,但我认为中间变量并没有真正提高可读性。 - Sven Marnach

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接