Python 如何应用切片窗口将熊猫转换为二维阵列?

Python 如何应用切片窗口将熊猫转换为二维阵列?,python,pandas,numpy,Python,Pandas,Numpy,我有以下数据帧: y = 1 3 1 4 2 5 1 我需要应用一个切片窗口,并将此数据帧转换为numpy数组,如下所示: array([ [ 1, 3, 1, 4 ], [ 3, 1, 4, 2 ], [ 1, 4, 2, 5 ], [ 4, 2, 5, 1 ] ] 每行包含y中的4个连续值。不包括最后3行,因为它们将包括NAN 我怎么做?退房 请注意,z_ar

我有以下数据帧:

y =
    1
    3
    1
    4
    2
    5
    1
我需要应用一个切片窗口,并将此数据帧转换为numpy数组,如下所示:

array([
        [ 1, 3, 1, 4 ],
        [ 3, 1, 4, 2 ],
        [ 1, 4, 2, 5 ],
        [ 4, 2, 5, 1 ]
     ]
每行包含
y
中的4个连续值。不包括最后3行,因为它们将包括NAN

我怎么做?

退房

请注意,
z_arr
中的某些元素实际上引用了同一内存块(因此您可能希望使用
z_arr.copy()


另一种选择是使用简单的列表理解和强制转换为NumPy
ndarray

如果
y
数据帧

np.array([y[k:k+4] for k in range(4)])[:,:,0]
如果
y
系列

np.array([y[k:k+4] for k in range(4)])

很好,谢谢。也许您现在还可以了解如何快速将
z_-arr
回滚到
y_-arr
?您可以将
z_-arr
的第一列与
z_-arr
的最后一行相结合(类似)
np.hstack((z_arr[:-1,0],z_arr[-1])
这是因为您可能使用的是
pd.Series
而不是所述的
pd.DataFrame
。查看我的最新答案
np.array([y[k:k+4] for k in range(4)])