【发布时间】:2014-09-12 14:54:56
【问题描述】:
我有一个 2D numpy 数组。我想用它制作一个 ASCII 文件。这是我使用的代码,其中a3 是 numpy 数组
f = open('ASCIIout.asc', 'w')
numpy.savetxt(ASCIIout, a3)
f.write("ncols " + str(ncols) + "\n")
f.write("nrows " + str(nrows) + "\n")
f.write("xllcorner " + str(xllcorner) + "\n")
f.write("yllcorner " + str(yllcorner) + "\n")
f.write("cellsize " + str(cellsize) + "\n")
f.write("NODATA_value " + str(noDATA) + "\n")
f.close()
现在我用附加选项打开它并写入二维数组值:
f_handle = open(ASCIIout, 'a')
numpy.savetxt(f_handle, MyArray, fmt="%.3f")
f_handle.close()
但是,我有几个问题。首先,fmt 真的不起作用我得到这样的值:
9.999000000000000000e+03
如果我只使用代码行下面的代码,我会得到-9999.000 1.345,但是,我没有将 ncols、nrows 等附加到 ASCII 文件中。
numpy.savetxt(f_handle, MyArray, fmt="%.3f")
我的数据范围从0到6。我真正想得到的是:
-9999 1.345 -9999 3.21 0.13 -9999
我在-9999 之后没有得到小数,而在1.345 等真实数据之后得到小数我在 R 中制作了 ASCII 文件,我想知道在 Python 中应该有一种简单的方法。提前感谢您的帮助。
【问题讨论】:
-
在第一个代码块中,
numpy.savetxt(ASCIIout, a3)做了什么?你还没有告诉我们ASCIIout中有什么(只是字符串“ASCIIout.asc”吗?),你还没有告诉我们 a3 中有什么。 -
你为什么不使用
header选项来numpy.savetxt -
@frank128791
a3是 numpy 数组,ASCIIout只是我要写入的文件的名称。
标签: python arrays file numpy ascii