我有一个类似
的数据框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
需要创建两个numpy数组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)