我正在尝试绘制以下形式的行的.txt文件:
filename.txt date magnitude
V098550.txt 362.0 3.34717962317
但是我收到错误“无法将字符串转换为浮点数:V113573.txt”。有谁知道这是numpy的语法错误,还是我如何解决我的问题?
import numpy as np
import matplotlib.pyplot as plt
x, y = np.loadtxt ("condensed.txt", usecols=(0, 1), delimiter=",",
unpack=True)
for ii in range (len(x)):
x[ii].replace('.txt', '.lc\n')
jd, npmag = np.loadtxt
("/net/jovan/export/jovan/oelkerrj/Vela/rotation/Vela/"+x[ii], usecols=
(0, 1), unpack=True)
plt.scatter (jd, npmag)
plt.xlabel ('Time')
plt.ylabel ('Mag')
plt.ylim ([max (npmag), min (npmag)])
plt.show() # aftertest comment this out
fileName = x[ii][:-3] + ".png"
plt.savefig(fileName)
print "done"
答案 0 :(得分:1)
很难找到代码中的所有错误,因此需要从头开始。首先,似乎数据文件将空格作为分隔符,因此您需要删除delimiter=","
,因为文件中没有逗号。
接下来,您无法将文件中的字符串V098550.txt
转换为浮点数。相反,它需要保持一个字符串。您可以在loadtxt
中使用转换器,并将该列的dtype
设置为字符串。
所以你可以从以下开始,看看你能走多远。如果出现更多错误,还需要知道V098550.txt
的内容。
import numpy as np
import matplotlib.pyplot as plt
conv = {0: lambda x: x.replace('.txt', ".lc")}
x, y = np.loadtxt("condensed.txt", usecols=(0, 1), delimiter=" ",
unpack=True, converters=conv, dtype=(str, str), skiprows=1 )
for ii in range (len(x)):
jd, npmag = np.loadtxt("/net/jovan/export/jovan/oelkerrj/Vela/rotation/Vela/"+x[ii], usecols=(0, 1), unpack=True)
plt.scatter (jd, npmag)
plt.xlabel ('Time')
plt.ylabel ('Mag')
plt.ylim ([max (npmag), min (npmag)])
plt.show() # aftertest comment this out
fileName = x[ii][:-3] + ".png"
plt.savefig(fileName)
print "done"