从python中的文件读取meshgrid数据

时间:2017-02-10 19:11:09

标签: python matplotlib contourf

我有一个文件" data.dat"以下数据:

[[0.2 0.3 0.4][0.3 0.2 0.4][0.5 0.3 0.4]]

现在我正在从文件中读取此数据

f=open("data.dat","r")
z=f.read()
f.close()

我有x=[1 2 3]& y=[1 2 3]。我从x&做了一个网格网格。 y

X,Y=plt.meshgrid(x,y)

现在我正在尝试使用

做等高线图
plt.contourf(X,Y,Z)

但它显示错误为: ValueError:无法将字符串转换为float:[[0.2 0.3 0.4] [0.3 0.2 0.4] [0.5 0.3 0.4]]

有关如何将Z数组作为float从文件中读取或写入" data.dat"的任何建议以其他方式提交文件?

1 个答案:

答案 0 :(得分:0)

您正在从文件中读取字符串并将该字符串放入fileName <- "input.csv" col <- c("integer","character","integer","integer","integer") df <- read.csv(file = fileName, sep = ",", colClasses=col, header = TRUE, stringsAsFactors = FALSE) 。但实际上你需要二维浮点数组而不是字符串。所以你必须解析你的字符串。可以通过将其转换为JSON来完成:

Z

另一种(更好的)方法是使用JSON将数据存储在文件中。

import json
with open("data.dat") as f:
    z = f.read()
z = z.replace(' ', ', ').replace('][', '], [')
Z = json.loads(z)

您还可以尝试不同的格式,例如CSV。