2012-07-30 2 views
0
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() 

인쇄 lat.shape, lon.shape, value.shapehdf5에서 numpy.savetxt로 포맷 하시겠습니까?

(480,640) (480,640) (307,200)

output = numpy.column_stack((lon,lat,value)) 

출력은 등을들 수있다 :

1.131087052608466621e+02 2.245298999778770010e+01 3.922619047619047450e+001.131096961042312046e+02 2.245299666446372910e+01 

각 줄에 3 개의 숫자 (과학이 아닌) 열을 가져 오도록 서식을 지정하려면 어떻게해야합니까? 즉 :

11310870 224529 3.922 
11310969 224529 4.512 
11320485 223643 5.332 
... 

답변

4

당신은 같은 savetxt FMT 키워드를 사용할 수 있습니다

numpy.savetxt(out_name,output, fmt="%u %u %.3f") 

당신은 출력 2의 정수 도트 전에 3 자리 숫자 이런 식으로 하나의 플로트.

x = x.flat 

로 :

은 벡터의 각이 정확한 벡터 모양 (1 차원 배열), 당신은 당신의 코드에 대체 할 수 있는지 확인하려면

x.ravel() 

을 여기서 x 수 귀하의 경도, 위도 및 데이터 벡터 수 있습니다.

+0

thx! 하지만 여전히 한 줄에 세 개 이상의 요소를 인쇄합니다 .. – oops

+0

또는 세 줄마다 새 줄로 바꾸는 방법은 무엇입니까? – oops

+0

그래, 내가 잘못 본 것 같아. 내 대답이 업데이트되었습니다. –