【问题标题】:Convert list of two dimensional DataFrame to Torch Tensor将二维 DataFrame 列表转换为 Torch 张量
【发布时间】:2020-02-11 09:50:53
【问题描述】:

目标:我在 PyTorch 中使用 RNN,我的数据由 DataFrames 列表给出,其中每个 DataFrame 意味着一个观察结果,例如:

import numpy as np
data = [pd.DataFrame(np.zeros((5,50))) for x in range(100)]

这意味着 100 次观察,每个参数有 50 个参数和 5 个时间步长。对于我的模型,我需要一个形状为 (100,5,50) 的张量。

问题:我尝试了很多东西,但似乎没有任何效果,有人知道这是怎么做到的吗? 这种方法不起作用:

import torch
torch.tensor(np.array(data))

我的问题是同时将 DataFrames 转换为 Arrays 并将 List 转换为 Tensor。

【问题讨论】:

  • 嘿,我对你如何建模你的问题很感兴趣,你介意分享知识吗?或者我可以寻找的任何参考/教程?因为大部分教程都是关于二维矩阵的。

标签: python dataframe pytorch torch


【解决方案1】:

我认为您不能在单个命令中转换数据帧列表,但您可以将数据帧列表转换为张量列表,然后将列表连接起来。

例如

import pandas as pd
import numpy as np
import torch

data = [pd.DataFrame(np.zeros((5,50))) for x in range(100)]

list_of_arrays = [np.array(df) for df in data]
torch.tensor(np.stack(list_of_arrays))

#or

list_of_tensors = [torch.tensor(np.array(df)) for df in data]
torch.stack(list_of_tensors)

【讨论】:

    【解决方案2】:

    为时已晚,但如果有人还在某个地方问这个问题......这是给你的

    import torch
    import numpy as np
    list_of_dataframe : List[pd.DataFrame] #= ....
    my_tensor = torch.tensor(np.array(list_of_dataframe))
    

    (python 3.9,numpy 1.20,pytorch 1.10)

    【讨论】:

      猜你喜欢
      • 2020-12-12
      • 2021-02-02
      • 2021-01-14
      • 2022-09-29
      • 2017-07-21
      • 2021-10-09
      • 2021-12-23
      • 2016-06-09
      • 2014-10-04
      相关资源
      最近更新 更多