Я пытаюсь вычислить центр масс 20 объектов, каждый из которых имеет свою собственную массу.
Эти объекты представлены в кадре данных cm_x
, а связанные с ними массы - в списке . Ниже для экономии места я показываю пример всего 3 из этих 20 объектов. Каждый объект имеет координату x, y, z
, но я просто покажу x
, а затем могу применить ту же технику к остальным. Ниже приведен заголовок фрейма данных.
bar_head_x bar_hip_centre_x bar_left_ankle_x
0 -203.3502 -195.4573 -293.262
1 -203.4280 -195.4720 -293.251
2 -203.4954 -195.4675 -293.248
3 -203.5022 -195.9193 -293.219
4 -203.5014 -195.9092 -293.328
m_head = 0.081
m_hipc = 0.139
m_lank = 0.0465
m = [m_head,m_hipc,m_lank]
Я видел в другом аналогичном вопросе, кто-то предложил этот метод, однако он не включает массы, и именно здесь у меня возникла проблема:
def series_sum(pd_series):
return np.sum(np.dot(pd_series.values, np.asarray(range(1, len(pd_series)+1)))/np.sum(pd_series))
cm_x.apply(series_sum, axis=1)
В основном я хочу, чтобы каждая строка имела связанный центр масс, используя формулу для центра масс sum(x_i * m_i) / sum(m_i)
.
Желаемым результатом будет новый столбец в кадре данных, например:
cm_x
0 -214.92
1 ...
2 ...
3 ...
4 ...
Любая помощь?