Как я могу доказать, какой вектор больше другого? - PullRequest
0 голосов
/ 15 января 2020

Я должен разделить два вектора. Итак, я должен доказать, какой из них больше, чтобы написать этот в знаменателе. Мой вектор состоит из пяти параметров. Как я могу достичь этого? Спасибо за помощь. Это мой текущий код:

import os
os.getcwd()
import pandas as pd
import loaddata as ld
import symmetryvalues as sv
import numpy as np

dataListStep = ld.loadData("../data/mpi/onlycsv/StepData")
indexStepData = 1
stepData = dataListStep[indexStepData]

leftMean = np.asarray([stepData.iloc[:, i].mean() for i in range(0, 5)])
rightMean = np.asarray([stepData.iloc[:, i].mean() for i in range(5, 10)])

#%% 
dataFrameStepLeftMean = pd.DataFrame({'leftMean': leftMean}, index=['Stride Length Mean', 'Stand Duration Mean', 'Swing Duration Mean', 'Douple Support Time Mean', 'Relation Swing Stand Mean'])
dataFrameStepRightMean = pd.DataFrame({'rightMean': rightMean}, index=['Stride Length Mean', 'Stand Duration Mean', 'Swing Duration Mean', 'Douple Support Time Mean', 'Relation Swing Stand Mean'])

print("The Result is: " +str(symRatio))

и:

def symmetryRatio(L, R):
    result = L/R
    return result

Это мои тестовые данные CSV:

1.00,0.80,0.40,0.20,0.50,1.20,0.90,0.30,0.20,0.34
1.10,0.85,0.50,0.21,0.59,1.30,0.95,0.40,0.21,0.42
0.90,0.90,0.45,0.23,0.50,1.10,1.00,0.35,0.23,0.35
1.05,0.70,0.40,0.28,0.57,1.25,0.80,0.30,0.28,0.38
0.95,0.75,0.45,0.30,0.60,1.15,0.85,0.35,0.30,0.42

РЕДАКТИРОВАТЬ: когда я вычисляю средние значения по десяти столбцам, я получаю эти десять значений: 1,0,8,0,44,0.244,0.552,1.2,0.9,0.34,0.244,0.382

После этого у меня два или два массива векторы "leftMean" и "rightMean".

leftMean включает в себя: 1,0,8,0,44,0,244,0,552

rightMean включает в себя: 1,2,0,9,0.34,0.244,0.382

Затем я делю leftMean на rightMean (см. Метод symbryRatio). Должно быть так, чтобы большее значение находилось в знаменателе.

Например: последнее значение в LeftMean больше, чем последнее значение в rightMean. Поэтому мне нужно изменить значения, чтобы разделить 0,382 на 0,552, а не 0,552 на 0,382.

Как я могу это реализовать?

(я всегда делю первое значение leftMean на первое значение RightMean, затем второе значение leftMean по второму значению rightMean и т. Д.)

1 Ответ

0 голосов
/ 22 января 2020

Это то, как вы можете это сделать, хотя я не знаю, почему вы сразу не загружаете его как pandas фрейм данных и не используете, например, apply function et c. Если мы начнем после расчета средств:

df = pd.DataFrame({'leftMean': leftMean, 'rightMean': rightMean}, index=['Stride Length Mean', 'Stand Duration Mean', 'Swing Duration Mean', 'Douple Support Time Mean', 'Relation Swing Stand Mean'])

df['symmetryValues'] = np.where(df['leftMean'] < df['rightMean'], df['leftMean']/df['rightMean'], df['rightMean']/df['leftMean'])

Если вы хотите использовать symmetryRatio:

df['symmetryValues'] = np.where(df['leftMean'] < df['rightMean'], symmetryRatio(df['leftMean'],df['rightMean']), symmetryRatio(df['rightMean'],df['leftMean']))

Out:

                           leftMean  rightMean  symmetryValues
Stride Length Mean            1.000      1.200        0.833333
Stand Duration Mean           0.800      0.900        0.888889
Swing Duration Mean           0.440      0.340        0.772727
Douple Support Time Mean      0.244      0.244        1.000000
Relation Swing Stand Mean     0.552      0.382        0.692029
...