从 pandas 数据帧到多维 numpy 数组以与 tensorflow 兼容

Posted

技术标签:

【中文标题】从 pandas 数据帧到多维 numpy 数组以与 tensorflow 兼容【英文标题】:From pandas dataframe to multidimensional numpy array for compatibility with tensorflow 【发布时间】:2020-07-15 07:24:44 【问题描述】:

我有一个 pandas 数据框,其中一列包含列表:

import pandas as pd
import numpy as np
(
   pd.DataFrame(
      "x": [[1, 2], [3, 4], [5, 6]]
   )
   .assign(x = lambda data: data.x.apply(np.array))  # convert lists into numpy arrays
   .to_numpy()
   .shape  # returns (3, 1) when I was hoping for a (3,1,2)
)

我想将这些数据作为 3D 数组传递到 tensorflow,但首先我需要能够从中得到正确的形状。

非常感谢!

【问题讨论】:

@JvdV,我不是 100% 确定,但我认为应该是 (3,1,2):3 行,1 列,2 维 【参考方案1】:

你可以像这样检索它:

import pandas as pd
import numpy as np
npArr = np.array(pd.DataFrame("x": [[1, 2], [3, 4], [5, 6]],
                               "y": [[1, 2], [3, 4], [5, 6]]).values.tolist())
print(npArr.shape)

【讨论】:

谢谢!我有几个后续问题:(1)我认为第一个维度应该对应于行,关于为什么第一个维度是 1(列)的任何想法?例如。如果我这样做pd.DataFrame("x": [1, 2, 3]).to_numpy().shape,它会按预期返回(3,1) 还有一个问题:虽然提议的解决方案是有道理的,但我觉得它对于我的用例来说并不完整(即使它实际上回答了最初的问题):你看,我有 1000 多个像x 这样的多维变量,我想将它们全部保存在一个数据集中,所以您能否扩展您的答案以涵盖输出表涵盖多列的情况,而不是(1,3,2),说(2,3,2)? 太棒了!非常感谢,这正是我想要的! 它基于@jezrael 的this 回答。我记了,所以也请在信用到期时给予信用=) @IVR,不客气。请参阅上面的评论,该评论直接指向另一篇很有帮助的帖子。另外,让我们清理一下问题/答案下面的 cmets。

以上是关于从 pandas 数据帧到多维 numpy 数组以与 tensorflow 兼容的主要内容,如果未能解决你的问题,请参考以下文章

11-2 numpy/pandas/matplotlib模块

加快从 pandas 数据帧到 mysql 的数据插入

从 Pandas 数据帧到 Spark 数据帧的转换需要大量时间

初步理解Numpy, Scipy, matplotib, pandas,

Numpy、Pandas 和 Sklearn 中的多维缩放拟合(ValueError)

NumPy 基础用法