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)])