来自 pandas 列向量的 pytorch 张量

pytorch tensor from pandas columns of vectors

我想将熊猫的列转换为 PyTorch 张量。该列的每个单元格都有一个 300 dim NumPy 向量(一个嵌入)。

我试过这个:

torch.from_numpy(g_list[1]['sentence_vector'].to_numpy())

但是它抛出这个错误:

TypeError: can't convert np.ndarray of type numpy.object_. The only supported types are: float64, float32, float16, complex64, complex128, int64, int32, int16, int8, uint8, and bool.

如果你有这个数据框,其中每一列都是 2 个数字的向量:

import torch
import pandas as pd

df = pd.DataFrame({'a':    [[ 3,  29],[ 3,  29]],
                   'b': [[94, 170],[ 3,  29]],
                   'c': [[31, 115],[ 3,  29]]})

要将此dataframe转换为pytorch张量,只需将dataframe的值转换为list,然后再转换为tensor:

t = torch.Tensor(list(df.values))

#output

tensor([[[  3.,  29.],
         [ 94., 170.],
         [ 31., 115.]],

        [[  3.,  29.],
         [  3.,  29.],
         [  3.,  29.]]])

t 的形状是 [2,3,2] 是 2 行,3 列,每个列表中有 2 个元素。