У меня есть такой фрейм данных, как
User_id trip_id segmentid velocity Transportation_Mode
10 1 1 26.89540395 bus
10 3 1 28.27382321 bus
10 3 2 3.580025333 walk
11 4 1 3.056558794 walk
11 4 2 5.74621102 bus
11 4 3 1.26180075 walk
11 7 1 31.75670826 car
11 7 2 8.572398839 bus
11 10 1 6.314346629 car
11 10 2 12.86523982 bus
Необходимость создания двух пустых массивов X. Существует несколько последовательностей, сгруппированных по (user_id, trip_id), где каждая группа представляет собой одну последовательность.Для LSTM все последовательности должны иметь фиксированную длину, поэтому мне нужно добавить 0 ко всем группам, чтобы все группы имели одинаковую длину.Для этой цели я получил максимальную длину группы в переменной mx, используя приведенный ниже код.
dataset['Transportation_Mode'].astype('category')
dataset['Transportation_Mode'] = dataset['Transportation_Mode'].cat.codes
gb = dataset.groupby(['userid','trip_id']) # Create Groupby object
mx = gb['trip_id'].size().max() # Find the largest group
print ('mx=',mx)
mx - максимальная длина группы, так что все остальные последовательности дополняются 0, чтобы иметь равную длину,
3D-массив X создан с использованием приведенного ниже кода.
X = np.array([np.pad(frame[['segmentid','velocity_mean']].values,
pad_width=(0,mx-len(frame)),
mode='constant',
constant_values=0)
for _,frame in gb]).reshape(-1,mx,1)
код работает для одной переменной, но не для 2 переменных, и я получаю ошибку значения
ValueError: не удалось преобразовать входной массив из формы (28,29) в форму (28)