Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 一个numpy数组的质心,如何使其不那么冗长?_Python_Numpy - Fatal编程技术网

Python 一个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) 如果数组

根据我对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)
如果数组的不同元素在
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)