双变量风场CFD插值分析

2024-04-20 06:18:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为一个新的开发项目做风分析。我可以预测一年中每个小时的气流模式,作为风速和风向的函数。当然,运行8760风力CFD模拟需要太多时间。我的方法是只运行16个模拟(8个风向和2个风速),并根据这些结果插值气流分布。在

给你一个关于数据看起来如何的想法,我创建了一个简化的案例。在

X = pd.Series([1,2,3,4,5])
Y = pd.Series([1,2,3,4,5])
Z = pd.Series([1,2,3,4,5])
v1 = pd.Series([2,6,1,7,8])
df1 = pd.DataFrame({'X':X,'Y':Y,'Z':Z,'v':v1})
df1['ws']=3
df1['wd']=180
v2 = pd.Series([3,1,4,2,2])
df2 = pd.DataFrame({'X':X,'Y':Y,'Z':Z,'v':v2})
df2['ws']=3
df2['wd']=0
v3 = pd.Series([2.5,2.3,1.3,7.2,1.4])
df3 = pd.DataFrame({'X':X,'Y':Y,'Z':Z,'v':v3})
df3['ws']=6
df3['wd']=180
v4 = pd.Series([2.4,5.6,6.1,2.3])
df4 = pd.DataFrame({'X':X,'Y':Y,'Z':Z,'v':v4})
df4['ws']=6
df4['wd']=0
df=pd.concat([df1,df2,df3,df4])

请注意,最后两列包含了特定模拟的气象风速和风向。点(X,Y,Z)可以是100000。在

现在假设我需要风速(ws)和风向(wd)的中间值的流量分布(X,Y,Z,v)。我希望能够聚合数据并获得每个点(X,Y,Z)速度场(v)的线性插值 用公式表示:(X,Y,Z)=f(data,ws,wd)

我想我需要使用groupby函数,但无法找到用两个变量实现的方法。在

另外,你认为数据面板会更适合这种数据结构吗?在


Tags: 数据方法函数dataframewsseriespddf1
1条回答
网友
1楼 · 发布于 2024-04-20 06:18:49

如果您想查看以两个变量为条件的分布特征,可以按照

In[10]: df.groupby(['ws', 'wd']).apply(lambda x: x.mean())
Out[10]: 
        X  Y  Z     v  ws   wd
ws wd                         
3  0    3  3  3  2.40   3    0
   180  3  3  3  4.80   3  180
6  0    3  3  3  4.10   6    0
   180  3  3  3  2.94   6  180

关于面板数据,这通常是一个品味的问题,对吧?你考虑过你想推广的X,Y,Z维吗。我通常不会这么做,所以你只剩下时间,这给你一个时间序列,而不是一个面板。在

此外,pandas的panel包过去缺少许多标准数据帧的特性。我相信最近有一些恢复,但我不知道太多,因为我没有真正使用它。肯定有人能插手进来。在

相关问题 更多 >