ValueError:无法将输入数组从形状(28,29)广播到形状(28)

时间:2019-03-10 06:15:35

标签: python numpy lstm

我有一个类似

的数据框
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)

0 个答案:

没有答案