重塑nparray返回“ IndexError:元组索引超出范围”
在“ https://machinelearningmastery.com/time-series-prediction-lstm-recurrent-neural-networks-python-keras/”之后,我从csv文件中制作了一个数据框。然后将这些值放入nparray“数据集”。缩放数据集,然后分为训练集和测试集。用值及其1个滞后值组成两列(trainX,trainY)。然后尝试重塑trainX。
dataset = passenger_data.values
dataset = dataset.astype('float32')
scale = MinMaxScaler(feature_range=(0,1))
dataset = scale.fit_transform(dataset)
train, test = dataset[0:train_size, :], dataset[train_size:len(dataset), :]
train_size = int(len(dataset) * 0.70)
train, test = dataset[0:train_size, :], dataset[train_size:len(dataset), :]
def create_coloumns(dataset, lag = 1):
colX, colY = [], []
for i in range(len(dataset) - lag):
a = dataset[i,0]
colX.append(a)
for j in range(lag, len(dataset)):
b = dataset[j,0]
colY.append(b)
return np.array(colX), np.array(colY)
trainX, trainY = create_coloumns(train, 1)
testX, testY = create_coloumns(test, 1)
trainX = np.reshape(trainX, (trainX.shape[0], 1, trainX.shape[1]))
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-62-96b89321dd69> in <module>
1 # trainX.shape
----> 2 trainX = np.reshape(trainX, (trainX.shape[0], 1, trainX.shape[1]))
3 # testX = np.reshape(testX, (testX.shape[0], 1, testX.shape[1]))
IndexError: tuple index out of range
答案 0 :(得分:2)
如果确实需要同时使用shape[0]
和shape[1]
,则可以使用np.atleast_2d()
函数来确保形状具有两个条目。例如,如果您编写一个对一维和二维数组都适用的函数,这可能会很有用。
您可以通过以下方式使用它:
a = np.array([1,2,3,4])
a = np.atleast_2d(a)
print(a.shape) # --> (1, 4)
答案 1 :(得分:1)
与Matlab中不同,numpy数组可以是一维的,因此shape参数中只有一个值。
a = np.array([1,2,3,4])
a.shape[0] # ok
a.shape[1] # error