将 DataFrame 重塑为 LSTM 时如何解决错误

How to solve error when reshaping DataFrame to LSTM

我有这样形状为 (6042, 6) 的 CSV 数据,并使用 DataFrame 调用它:

我想用它作为 LSTM 的输入。 根据我的阅读,LSTM 需要 3d 数组 [samples, time steps, features] 形式的数据。 因为DataFrame没有reshape属性,所以我把它改成了NumPy数组,尝试reshape,但是报错:

TypeError: only integer scalar arrays can be converted to a scalar index

我尝试使用以下代码:

train_data = train_data.to_numpy()
train_data = train_data.reshape(1, train_data[0], train_data[1])

我的步骤是不是错了?

基于reshape documentation,调用例程的格式为:

numpy.reshape(a, newshape, order='C')

因此,你应该做...

import numpy    
numpy.reshape(train_data, (1, train_data[0], train_data[1]))

...假设上面的形状就是你想要的。

您的代码返回错误消息是因为,当您编写 train_data[0] 时,您得到的是 train_data 二维 numpy 数组的第一行:

>>> df = pd.DataFrame([[.4,.6,.3], [.7,.8,.9]])
>>> df
     0    1    2
0  0.4  0.6  0.3
1  0.7  0.8  0.9
>>> df = df.to_numpy()
>>> df[0]
array([0.4, 0.6, 0.3])

您真正想要的是使用数据框的形状。试试这个:

>>> df = df.to_numpy()
>>> df = df.reshape(1, df.shape[0], df.shape[1])
>>> df
array([[[0.4, 0.6, 0.3],
        [0.7, 0.8, 0.9]]])
>>> df.shape
(1, 2, 3)