import numpy
import tables
file = tables.openFile( "....hdf5","r")
lon = numpy.array(file.root.lon)
lon.ravel()
lat = numpy.array(file.root.lat)
lat.ravel()
data = numpy.array(file.root.data)
v0= data.shape[0]
v1= data.shape[1]
v2= data.shape[2]
wind_spectrum_flat = data.reshape((v0, v1*v2))
interval_spectrum = numarray.arange(30) + 0.5
speed_mean = numarray.dot(interval_spectrum, wind_spectrum_flat)/days/24.
value = numarray.reshape(speed_mean, (v1, v2) )
value.ravel()
print lat.shape,lon.shape,value.shape
(480,640)(480,640)(307200,)
output = numpy.column_stack((lon,lat,value))
输出如下:
1.131087052608466621e+02 2.245298999778770010e+01 3.922619047619047450e+001.131096961042312046e+02 2.245299666446372910e+01
如何格式化它们以在每一行中获得三个数字(非科学)列?即:
11310870 224529 3.922
11310969 224529 4.512
11320485 223643 5.332
...
答案 0 :(得分:4)
您可以使用savetxt fmt关键字:
numpy.savetxt(out_name,output, fmt="%u %u %.3f")
您将以这种方式输出2个整数和一个3位数的浮点数。
为了确保每个向量都具有正确的向量形状(1维数组),您可以在代码中替换:
x = x.flat
by:
x.ravel()
其中x可以是你的lon,lat和数据向量。