gpt4 book ai didi

python:计算质心

转载 作者:行者123 更新时间:2023-11-28 19:48:53 30 4
gpt4 key购买 nike

我有一个包含 4 列的数据集:x、y、z 和值,比方说:

x  y  z  value
0 0 0 0
0 1 0 0
0 2 0 0
1 0 0 0
1 1 0 1
1 2 0 1
2 0 0 0
2 1 0 0
2 2 0 0

我想计算所有值的质心 CM = (x_m,y_m,z_m)。在本示例中,我希望看到 (1,1.5,0) 作为输出。

我以为这一定是个小问题,但我在网上找不到解决办法。 scipy.ndimage.measurements.center_of_mass 似乎是正确的,但不幸的是,该函数总是返回两个值(而不是 3 个)。此外,我找不到任何关于如何从数组设置 ndimage 的文档:Would I use a numpy array N of shape (9,4)?那么 N[:,0] 会是 x 坐标吗?

非常感谢任何帮助。

最佳答案

我能想到的最简单的方法是:找到质量分量坐标的平均值,这些坐标由每个分量的贡献加权。

import numpy
masses = numpy.array([[0, 0, 0, 0],
[0, 1, 0, 0],
[0, 2, 0, 0],
[1, 0, 0, 0],
[1, 1, 0, 1],
[1, 2, 0, 1],
[2, 0, 0, 0],
[2, 1, 0, 0],
[2, 2, 0, 0]])

nonZeroMasses = masses[numpy.nonzero(masses[:,3])] # Not really necessary, can just use masses because 0 mass used as weight will work just fine.

CM = numpy.average(nonZeroMasses[:,:3], axis=0, weights=nonZeroMasses[:,3])

关于python:计算质心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29356825/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com