将二维 DataFrame 列表转换为 Torch 张量
Convert list of two dimensional DataFrame to Torch Tensor
目标: 我在 PyTorch 中使用 RNN,我的数据由 DataFrame 列表给出,其中每个 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。
我认为您不能在单个命令中转换数据帧列表,但您可以将数据帧列表转换为张量列表,然后连接列表。
例如
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)
太晚了,但如果有人还在某处问这个问题...这是给你的<3
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)
目标: 我在 PyTorch 中使用 RNN,我的数据由 DataFrame 列表给出,其中每个 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。
我认为您不能在单个命令中转换数据帧列表,但您可以将数据帧列表转换为张量列表,然后连接列表。
例如
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)
太晚了,但如果有人还在某处问这个问题...这是给你的<3
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)