【问题标题】:Reading meshgrid data from file in python从python中的文件中读取网格数据
【发布时间】:2017-02-10 19:11:08
【问题描述】:

我有一个文件“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]。我从xy 制作了一个网状网格

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

现在我正在尝试使用等值线图

plt.contourf(X,Y,Z)

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

关于如何从文件中读取 Z 数组作为浮点数或以其他方式写入“data.dat”文件的任何建议?

【问题讨论】:

  • x和y中存储的元素有哪些类型?

标签: python matplotlib contourf


【解决方案1】:

您正在从文件中读取一个字符串并将该字符串放入Z。但实际上你需要浮点数的二维数组而不是字符串。所以你必须解析你的字符串。可以通过将其转换为 JSON 来完成,如下所示:

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

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

import json    
Z = [[0.2, 0.3, 0.4], [0.3, 0.2, 0.4], [0.5, 0.3, 0.4]]
with open("data.dat", 'w') as f:
    json.dump(Z, f)

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

【讨论】:

  • @IIyaV 问题是我正在使用 C++ 代码生成数据。它是关于宇宙学模拟的。但是,我按照您告诉我的方式导入、导出然后导入数据,但同样的错误又出现了。但是我能够通过从这里获取提示来重塑数据输出来解决问题:stackoverflow.com/questions/6323737/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-08
  • 2018-02-04
  • 1970-01-01
  • 2016-08-09
  • 2015-01-10
相关资源
最近更新 更多