向/从文本文件

时间:2016-09-13 16:03:42

标签: python numpy save text-files

我有以下两个系列:

self.MW_x = ..
self.MW_x = .. (from previous calculations)

我把它们拉在一起就像这样:

self.MW_final = list(zip(self.MW_x, self.MW_y))

并尝试使用numpy.savetxt

保存它们
np.savetxt("testfile.txt", self.MW_final, delimiter = ";", header = "x_Value, y_Value")

如果我直接绘制它(self.MW_x,self.MW_y),它看起来像这样,这是完美的:

perfect plot

但是如果我再次尝试绘制保存的文本文件,它看起来像这样:

entirely wrong

我只是不知道在去文件的路上发生了什么,然后回来了。

2 个答案:

答案 0 :(得分:0)

你是否可以通过numpy以分号分隔符导出它?如果没有,那么简单地通过Pandas导出也会容易得多。即。)

df = pd.DataFrame({"x_value":self.MW_x, "y_value": self.MW_y})
df.to_csv("testfile.txt")

df_again = pd.read_csv("testfile.txt")

另外,在你回答这个问题的答案中,你有:

x_val = df.ix[0:]
y_val = df.ix[1:]

为x_val返回 0到N(N = len(df)),为y_val返回 1到N.这就是为什么你得到两个不同长度的数组。

要从pandas DataFrame中调用列,您可以编写:

x_val = df['col_name1']
y_val = df['col_name2']

或者更简单地说,如果' col_name2'是你的x轴变量,你可以这样做:

df.set_index('col_name2', inplace = True)
df.plot()

将绘制变量' col_name1'在y轴上反对'col_name2'在x轴上。

答案 1 :(得分:0)

您是否尝试过每一步查看前5行数据(self.MW_x的前5行,self.MW_final,/ Users / sping /Desktop / testfile.txt,df,x_val和y_val)弄清楚数据在哪里发生变化?

我认为你对如何使用ix有疑问

x_val = df.ix[0:]
y_val = df.ix[1:]

没有抓住第一列和第二列。它抓住第一行直到结束[0:],第二行直到结束[1:]。因此,x_val将比y_val长1行。你想用

x_val = df.ix[:,0]
y_val = df.ix[:,1]

ix的第一个参数为您提供行,第二个参数为您提供列。

如果要使用列标题,还要设置header = 0或者将其保留为默认值。 Python使用零索引,因此第一行是第0行,而不是第1行。

我看起来你在发布的代码中有一些拼写错误。您还在使用';'使用np.savetxt和'进行保存时的分隔符,'作为使用pd.read_csv阅读时的分隔符。