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

Hoo*_*ked 3 python numpy

根据我所知道的numpy,一次将一个操作应用于一个数组的每一行是个坏主意.广播显然是首选方法.鉴于此,我如何获取具有形状的数据(N,3)并将其转换为质心?以下是我正在使用的"坏方法".这有效,但我怀疑它会有大的性能影响N:

CM = R.sum(0)/R.shape[0]
for i in xrange(R.shape[0]): R[i,:] -= CM
Run Code Online (Sandbox Code Playgroud)

Sve*_*ach 8

尝试

R -= R.sum(0) / len(R)
Run Code Online (Sandbox Code Playgroud)

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


Jos*_*del 8

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

R -= R.mean(axis=0)
Run Code Online (Sandbox Code Playgroud)

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

R -= np.average(R,axis=0,weights=mass)
Run Code Online (Sandbox Code Playgroud)

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