【问题标题】:From pandas dataframe to multidimensional numpy array for compatibility with tensorflow从 pandas 数据帧到多维 numpy 数组以与 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 维

标签: python pandas numpy tensorflow


【解决方案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。
猜你喜欢
  • 2019-09-23
  • 2019-03-12
  • 2020-08-18
  • 2021-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-22
相关资源
最近更新 更多