【问题标题】:lost dimension in numpy array acquired from a dataframe从数据帧获取的 numpy 数组中丢失的维度
【发布时间】: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])

dataframe

当我将整个数据帧转换为 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.vstacknp.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


【解决方案1】:

我想您必须创建一个具有所需尺寸的新数组并遍历您的数组矩阵 (X)

result = np.zeros(X.shape + X[0, 0].shape)
for i in range(X.shape[0]):
    for j in range(X.shape[1]):
        result[i, j] = X[i, j]

【讨论】:

  • 谢谢你,Gabriel,我只是在写一些与此非常相似的东西。这很好用。干杯
猜你喜欢
  • 2015-07-29
  • 2015-05-16
  • 1970-01-01
  • 2015-06-06
  • 1970-01-01
  • 2017-09-12
  • 2016-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多