具有两个以上维度的数据帧切片

2024-02-26 10:34:36 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我正在学习机器学习教程,遇到了以下代码行:

pred_list = []

batch = train[-n_input:].reshape((1, n_input, n_features))

for i in range(n_input):   
    pred_list.append(model.predict(batch)[0]) 
    batch = np.append(batch[:,1:,:],[[pred_list[i]]],axis=1)

具体地说,for循环内部发生了什么。我知道第一行代码会获取预测的第一个值,这只是一个值。接下来,它将值附加到批处理的末尾,这就是我感到困惑的地方

为什么批处理位于代码的第二行batch[:,1:,:]?这是什么意思?我不太确定数据帧切片,有人能解释一下for循环中第二行代码的含义吗?非常感谢。这里有个问题。谢谢你的阅读


Tags: 代码in机器forinputmodelbatchrange
2条回答

在我看来batch是一个numpy数组,具有3个维度的形状(1, n_input, n_features),1行n_input列和n_features深度batch[:,1:,:]将是batch的一个片段,从batch的第二列到最后一列(python是基于0的索引)。我猜这些列表示input,即输入1到最后的所有特性

batch = np.append(batch[:,1:,:],[[pred_list[i]]],axis=1)沿着作为列的axis=1[[pred_list[i]]]追加到batch的切片上。所以我猜它会从batch中删除第一个输入,并将新的[[pred_list[i]]]作为最后一个输入添加到batch中,然后对batch中的所有输入重新执行此操作

ndarray可以通过两种方式编制索引

arr = np.array([[[1,2,3],
                 [3,4,5],
                 [7,8,9]]])

或者

arr[1][0][2] #row, col, layer

arr[1,0,2]  #row, col, layer

第一个索引为您提供行、第二列、第三层等。这两种方法都将为您提供第二行、第一列和第三层中的元素

batch[:,1:,:]表示您需要所有行、第一列之后的所有列和所有层

p.S

如果你知道一个更好的词,我在这里用了这个词

相关问题 更多 >