据我所知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
答案 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