首页 > 解决方案 > 如何将“tensor([13., 16.])”之类的字符串转换为张量

问题描述

我从文件 txt 中读取了一个数据,其中包含有关位置的信息,如下所示:“... Location: tensor([13., 16.]) Location: tensor([11., 1.]) ...”我的问题是如何将其转换为实张量以制作绘图。我正在读取这样的数据:

for line in file:
     M_l = re.search(r"Location: (.*)", line)
     location = M_l.group(1)
     plt.plot(location, 'r+')

标签: pythonmatplotlib

解决方案


试试下面的代码片段。您必须提取与您的张量相对应的实际列表(在括号之间),这些列表是string格式的。因此,使用 . 将此字符串列表转换为 python 列表ast。然后用于tf.convert_to_tensor转换为张量(仅在必要时?)。如果您确实想转换为张量,那么您必须在会话中运行张量并获取值和绘图。如果您不需要生成张量,您可以只绘制列表而不使用 tensorflow 会话。

import tensorflow as tf
import re
import ast


file = open("test.txt","r")
for line in file:
    M_l = re.search(r"Location: (.*)", line)
    location = M_l.group(1)
    location=ast.literal_eval(re.search('\(([^)]+)', location).group(1))

    l=tf.convert_to_tensor(location, dtype=tf.float32)

    with tf.Session() as sess:

        plt.plot(sess.run(l), 'r+')

推荐阅读