Python 一个numpy数组的质心,如何使其不那么冗长?
根据我对numpy的了解,将一个操作应用于数组的每一行,一次一个。广播显然是首选的方法。考虑到这一点,我如何获取具有形状Python 一个numpy数组的质心,如何使其不那么冗长?,python,numpy,Python,Numpy,根据我对numpy的了解,将一个操作应用于数组的每一行,一次一个。广播显然是首选的方法。考虑到这一点,我如何获取具有形状(N,3)的数据并将其转换为质心?下面是我正在使用的“坏方法”。这是可行的,但我怀疑它会对大型N的性能造成影响: CM = R.sum(0)/R.shape[0] for i in xrange(R.shape[0]): R[i,:] -= CM 试一试 相反。广播将自动执行正确的操作。根据您的定义,您可以将重心计算简化为: R -= R.mean(axis=0) 如果数组
(N,3)
的数据并将其转换为质心?下面是我正在使用的“坏方法”。这是可行的,但我怀疑它会对大型N
的性能造成影响:
CM = R.sum(0)/R.shape[0]
for i in xrange(R.shape[0]): R[i,:] -= CM
试一试
相反。广播将自动执行正确的操作。根据您的定义,您可以将重心计算简化为:
R -= R.mean(axis=0)
如果数组的不同元素在mass
中定义了不同的质量,那么我将使用:
R -= np.average(R,axis=0,weights=mass)
参见所以错误是试图将
CM
数组塞进减法中,而不是一次性解决它?@Hooked:你也可以做CM=R.sum(0)/len(R);R-=CM
,但我认为中间变量并没有真正帮助可读性。有点晚了,但是scipy.ndimage.measurements.center\u of \u mass
可能是一个相关的函数,需要知道。。。
R -= np.average(R,axis=0,weights=mass)