You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将CSV中存储的字符串形式Tensor转换回Tensor对象

将CSV中的Tensor字符串转回PyTorch Tensor对象

以下是几种可行的转换方法:

方法1:直接使用eval(简单但需注意安全)

如果CSV数据来源可信,可通过字符串清理+eval快速转换:

import torch

# 从CSV读取的Tensor字符串
tensor_str = "'tensor([-1.7110e-01,  1.3811e-01, -2.5881e-01, -1.8281e-01, -3.3073e-01,\n        -1.1071e-01])'"

# 去除首尾单引号
cleaned_str = tensor_str.strip("'")
# 转换为Tensor对象
tensor = eval(cleaned_str)

# 验证结果
print(tensor)
print(type(tensor))  # 输出 <class 'torch.Tensor'>

⚠️ 注意:eval会执行字符串中的任意代码,若CSV数据不可信(比如包含恶意代码),请勿使用此方法。

方法2:正则提取数值后转换(安全通用)

通过正则表达式提取数值列表,再手动转换为Tensor,避免执行未知代码:

import torch
import re

tensor_str = "'tensor([-1.7110e-01,  1.3811e-01, -2.5881e-01, -1.8281e-01, -3.3073e-01,\n        -1.1071e-01])'"

# 提取括号内的数值字符串
num_section = re.search(r'\[(.*?)\]', tensor_str, re.DOTALL).group(1)
# 清理换行符、分割数值
num_strs = re.split(r',\s*', num_section.replace('\n', ''))
# 转换为float列表
num_list = [float(num) for num in num_strs]
# 生成Tensor
tensor = torch.tensor(num_list)

# 验证结果
print(tensor)
print(type(tensor))

方法3:使用ast.literal_eval(安全且简洁)

利用ast.literal_eval解析列表(比eval安全,仅支持字面量解析),再转换为Tensor:

import torch
import ast

tensor_str = "'tensor([-1.7110e-01,  1.3811e-01, -2.5881e-01, -1.8281e-01, -3.3073e-01,\n        -1.1071e-01])'"

# 清理字符串:去掉单引号、替换tensor(...)为列表格式
cleaned_str = tensor_str.strip("'").replace('tensor(', '').replace(')', '')
# 解析为Python列表
num_list = ast.literal_eval(cleaned_str)
# 转换为Tensor
tensor = torch.tensor(num_list)

# 验证结果
print(tensor)
print(type(tensor))

内容的提问来源于stack exchange,提问作者Him Singhvi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 16:02:52