一个numpy数组的质量中心,如何减少冗长?

时间:2012-01-18 21:12:20

标签: python numpy

据我所知numpy,it's a bad idea一次一个地对一个数组的每一行应用一个操作。广播显然是首选方法。鉴于此,如何获取形状为(N,3)的数据并将其转换为质心?以下是我正在使用的“坏方法”。这有效,但我怀疑它会对大N

产生影响
CM = R.sum(0)/R.shape[0]
for i in xrange(R.shape[0]): R[i,:] -= CM

2 个答案:

答案 0 :(得分:8)

尝试

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

代替。广播将自动做正确的事。

答案 1 :(得分:8)

正如您所定义的那样,您可以将质心计算简化为:

R -= R.mean(axis=0)

如果数组的不同元素在mass中定义了不同的质量,我会使用:

R -= np.average(R,axis=0,weights=mass)

请参阅http://docs.scipy.org/doc/numpy/reference/generated/numpy.average.html