来自 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 个元素。
我想将熊猫的列转换为 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 个元素。