【问题标题】:matplotlib.pyplot.plot, ValueError: could not convert string to float: fmatplotlib.pyplot.plot,ValueError:无法将字符串转换为浮点数:f
【发布时间】:2015-09-24 08:10:17
【问题描述】:

我正在尝试使用 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(depth, distance): ValueError: could not convert string to float: f
我不明白这一点,因为似乎我将所有字符串值都转换为浮点类型。我试图在stackoverflow上搜索这个问题,但是一旦将所有字符串值转换为float或int,它们似乎都解决了这个问题。任何人都可以就这个问题提出任何建议吗?如果您能提供任何帮助,我将不胜感激。

【问题讨论】:

    标签: python numpy matplotlib


    【解决方案1】:

    您将值与类型混淆了。如果您尝试声明类型,则需要使用“dtype=”。您实际上所做的是将单个字符粘贴到数组中。

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

    word = float(word)
    

    可能工作得很好。但是,我们无法判断,因为您没有对结果值做任何事情。您是否希望这会改变变量“line”中的原始内容?公共变量不是这样工作的。

    【讨论】:

    • 非常感谢您的回复。你能解释一下这个 dtype 吗?我在声明数组或添加值时使用它吗?
    • docs.scipy.org/doc/numpy/reference/generated/numpy.array.html 这也应该在您的课程或培训材料中。
    • 谢谢。我只是自学并尝试从小项目开始。我查看了文档并将声明更改为:“depth = np.array(dtype=float32)”我收到另一条错误消息说“NameError: name 'float32' is not defined”。在使用它之前我错过了什么吗?
    • 另外,我仍然对放入数组的值类型感到困惑。如果我放入数组的值是字符串,为什么“word = float(word)”不起作用?我以为我转换了,因为我认为我的值从“-5.3458000e+00”变为“-5.3458”只会发生在浮点值而不是字符串上。
    • stackoverflow.com/questions/568962/… ...我怀疑您需要指定 numpy.float32 - 这取决于您首先如何导入 numpy。另见engr.ucsb.edu/~shell/che210d/numpy.pdf
    猜你喜欢
    • 2019-11-29
    • 1970-01-01
    • 2019-03-23
    • 2018-06-13
    • 2013-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多