matplotlib.pyplot.plot,ValueError:无法将字符串转换为float:f

时间:2015-09-23 23:03:46

标签: python numpy matplotlib

我试图用python制作情节。下面是导致错误的代码的简化版本。

import numpy as np
import matplotlib   
import matplotlib.pyplot as plt
matplotlib.use("AGG")

distance = np.array('f')
depth = np.array('f')# make sure these two arrays store float type value

with open('Line671.txt','r') as datafile:
  for line in datafile:
    word_count = 0
    for word in line.split():
        word = float(word)#convert string type to float
        if word_count == 0:
            distance = np.append(distance, word)
        elif word_count == 1:
            depth = np.append(depth, word)
        else:
          print 'Error'
        word_count += 1

datafile.closed


print depth
print distance #outputs looks correct 
# original data is like this: -5.3458000e+00
# output of the array is :['f' '-5.3458' '-5.3463' ..., '-5.4902' '-5.4912' '-5.4926']

plt.plot(depth, distance)# here comes the problem  

错误消息显示plt.plot(深度,距离)的行:ValueError:无法将字符串转换为float:f
我不明白这一点,因为我似乎将所有字符串值转换为浮点类型。我试图在stackoverflow上搜索这个问题,但是一旦将所有字符串值转换为float或int,它们似乎都解决了问题。任何人都可以就此问题提出任何建议吗?我会非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您将值与类型混淆了。如果您要尝试声明类型,则需要使用“dtype =”。你实际做的是将一个字符插入数组中。

要回答以后的问题,您的行

word = float(word)

可能工作得很好。但是,我们无法分辨,因为您没有对结果值执行任何操作。你是否期望这会改变变量“line”中的原始内容?常见变量不起作用。