# -*- coding: utf-8 -*-
"""
Created on Fri Jul 03 14:15:43 2015
@author: wawatou83
"""
import pandas as pd
import numpy as np
import os
InputDir = r'D:\R\P'
rootdir = InputDir
#初始化U、V、W以高度层
weixiangDfInitial=pd.DataFrame({'Height':range(100,6000,60)})
jingxiangDfInitial=pd.DataFrame({'Height':range(100,6000,60)})
chuizhiDfInitial=pd.DataFrame({'Height':range(100,6000,60)})
#定义计算函数,用到数组的元素级别计算
def calUV(jiaodu,sudu):
u = (-1) * np.sin( float(jiaodu) * np.pi / 180) * float(sudu)
v = (-1) * np.cos( float(jiaodu) * np.pi / 180) * float(sudu)
return '%.2f' % u,'%.2f' % v
#return u,v
for parent,dirnames,filenames in os.walk(rootdir):
for filename in filenames:
df=pd.read_csv(os.path.join(parent,filename),skiprows=3,header=None,nrows=99,sep=' ')
#dataframe转换为矩阵
#注意df.replace('/////',np.nan)后df仍然是不变的
array = df.replace('/////',np.nan).iloc[:,1:3].values
#计算函数应用到数组元素级别
calUV_ufunc = np.frompyfunc(calUV, 2, 2)
[U, V] = calUV_ufunc(array[:,0],array[:,1])
#print U.dtype注意UV的类型为object
#转换UV类型为float
U = U.astype(np.float)
V = V.astype(np.float)
#矩阵重新转为dataframe
Udf = pd.DataFrame(U)
Vdf = pd.DataFrame(V)
#粘贴
weixianglocaldf = weixiangDfInitial
weixiangpieces=[weixianglocaldf,Udf.replace(np.nan, 9999)]
weixiangDfInitial=pd.concat(weixiangpieces,axis=1,ignore_index=True)
jingxianglocaldf = jingxiangDfInitial
jingxiangpieces=[jingxianglocaldf,Vdf.replace(np.nan, 9999)]
jingxiangDfInitial=pd.concat(jingxiangpieces,axis=1,ignore_index=True)
chuizhilocaldf = chuizhiDfInitial
chuizhipieces=[chuizhilocaldf,df.iloc[:,3]]
chuizhiDfInitial=pd.concat(chuizhipieces,axis=1,ignore_index=True)
print weixiangDfInitial, jingxiangDfInitial ,chuizhiDfInitial
#dataframe可以很方便的转置
weixiangDfInitial.T.to_csv('weixiang.txt')
jingxiangDfInitial.T.to_csv('jingxiang.txt')
chuizhiDfInitial.T.to_csv('chuizhi.txt')
使用python和numpy重写计算uv分量脚本
最新推荐文章于 2024-07-29 02:36:06 发布