【发布时间】:2021-04-12 23:25:38
【问题描述】:
我有一个数据框(您可以从提供的链接中看到数据框的图像)。
df.shape, type(girdi), type(girdi.iloc[0, 0])
>>>(10292, 5), pandas.core.frame.DataFrame, numpy.ndarray)
此数据帧中的每个值都是一个 NumPy 数组,其中包含 55 个数据点 (55, )。
df.iloc[0,0]
>>>array([64.75, 65.62, 64.21, 64.62, 63.94, 62.63, 62.24, 62.65, 62.47,
63.17, 63.46, 63.75, 65.41, 65.35, 65.68, 65.97, 66.6 , 66.45,
66.11, 65.48, 64.22, 63.54, 62.81, 63.58, 62.46, 61.23, 62.26,
61.13, 61.68, 61.36, 61.93, 61.48, 61.92, 62.43, 63.37, 62.59,
63.33, 63.52, 63.23, 62.52, 63.03, 63.61, 63.83, 63.7 , 63.94,
65.14, 66. , 66.65, 65.87, 64.93, 65.84, 64.75, 65.5 , 65.7 ,
66.83])
当我将整个数据帧转换为 NumPy 数组时,NumPy 无法识别第三维。
X = np.array(df)
X.shape
>>>(10292, 5)
X.shape, type(X)
>>>((10292, 5), numpy.ndarray)
X[0].shape, type(X[0])
>>>((5,), numpy.ndarray)
X[0, 0].shape, type(X[0, 0])
>>>((55,), numpy.ndarray)
我期望(并且渴望)得到:
X.shape, X[0, 0, 0]
>>>(10292, 5, 55), 64.75
要访问数据,使用X[0][0][0] 或X[0, 0] [0] 会有所帮助,尽管它对我的需求没有帮助。我想用X[0, 0, 0]访问数据。
我尝试使用np.vstack 或np.expand_dims,但没有成功。如何将数据转为(10292, 5, 55) 维度?
谢谢你,
埃夫里姆
【问题讨论】:
-
您的数据框中没有第三个维度。数据帧总是二维的。此框架具有对象 dtype,其中每个单元格值都是一个 numpy 数组。但是对于 object dtype,这些单元格不必是数组,也不必都是相同的形状。它们可以是数字、字符串、
None或谁知道什么。X反映了这种普遍性! -
对于一列,一个系列,结果数组将是 1d,(10292,) 形状,
vstack(或stack)将用于制作(10292,55)数组。试试这个:np.array(X.tolist()). -
谢谢你,hpaulj。我希望找到一个像你一样简单的解决方案。这就像一个魅力。荣誉
标签: pandas numpy multidimensional-array