从 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 数据帧到 Spark 数据帧的转换需要大量时间
初步理解Numpy, Scipy, matplotib, pandas,