数值型指标—风
<p>[TOC]</p>
<pre><code class="language-python">%matplotlib inline
%load_ext autoreload
%autoreload 2
import meteva.method as mem
import meteva.base as meb
import numpy as np</code></pre>
<p>风是一个矢量,同时由由于风速的分布具有很强的非正态性,因此目前对它的检验通常采用风向和风速分别检验的方法,并且检验时还会将连续变化的风向风速转换成不连续的方位和风速等级再做检验。以下结合随机生成的测试数据,说明风预报的常用检验指标和计算函数。 </p>
<pre><code class="language-python">#随机生成观测的风速
s_ob = np.abs(np.random.randn(5))*10
s_ob</code></pre>
<pre><code>array([6.32572981, 4.3694093 , 4.2096257 , 1.16151087, 8.96940428])</code></pre>
<pre><code class="language-python">#随机生成观测的风向
d_ob = np.random.rand(5) * 360
d_ob</code></pre>
<pre><code>array([259.38466428, 49.41874707, 54.46767178, 36.2811972 ,
214.32896731])</code></pre>
<pre><code class="language-python">#随机生成预报的风速
s_fo = np.abs(np.random.randn(2,5))*10
s_fo</code></pre>
<pre><code>array([[27.01222687, 2.20576174, 5.95657258, 17.19286875, 12.44037995],
[ 0.20900567, 14.12638053, 18.24215693, 1.7315648 , 0.99415228]])</code></pre>
<pre><code class="language-python">#随机生成预报的风向
d_fo = np.random.rand(2,5) * 360
d_fo</code></pre>
<pre><code>array([[ 48.42395214, 63.20611929, 16.06542744, 310.16367655,
79.57170982],
[324.02462923, 251.74147278, 38.9453445 , 301.66467173,
184.71805761]])</code></pre>
<pre><code class="language-python">#计算观测的u,v分量
u_ob = -s_ob * np.sin(d_ob * 3.14 / 180)
v_ob = -s_ob * np.cos(d_ob * 3.14 / 180)
print(u_ob)
print(v_ob)</code></pre>
<pre><code>[ 6.21478098 -3.31725413 -3.42456233 -0.68702189 5.04418261]
[ 1.1795571 -2.84386404 -2.44812609 -0.93654066 7.41663232]</code></pre>
<pre><code class="language-python">#计算预报的u,v分量
u_fo = -s_fo * np.sin(d_fo * 3.14 / 180)
v_fo = -s_fo * np.cos(d_fo * 3.14 / 180)
print(u_fo)
print(v_fo)</code></pre>
<pre><code>[[-20.19950489 -1.96838147 -1.64757764 13.16925994 -12.23330406]
[ 0.12326218 13.40526113 -11.46174292 1.47621628 0.08015218]]
[[-17.93433586 -0.99541912 -5.72418071 -11.05284255 -2.26038159]
[ -0.16878923 4.45573797 -14.19171373 -0.90504264 0.99091594]]</code></pre>
<h1>风向检验中间量</h1>
<p><strong><font face="黑体" color=blue size = 5>nas_d(d_ob,d_fo,s_ob = None,s_fo = None, ignore_breeze = False)</font></strong><br />
计算风向预报准确率和评分的中间量:样本数、正确数、累计得分<br />
将输入的观测和预报风向(0-360度),转换成计算风向预报准确率,风向预报评分所需要的中间量
,计算的第一步是将预报和观测的风向都转换成8个离散的方位角。</p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>d_ob</font></strong></td>
<td style="text-align: left;">观测的风向,numpy数组</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>d_fo</font></strong></td>
<td style="text-align: left;">预报的风向,numpy数组,numpy可以比d_ob高一维(用于同时进行多家预报结果检验),d_fo.shape低维与d_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>s_ob</strong></td>
<td style="text-align: left;">观测的风速,numpy数组,shape和d_ob完全一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>s_fo</strong></td>
<td style="text-align: left;">预报的风速,numpy数组,numpy可以比d_ob高一维(用于同时进行多家预报结果检验),s_fo.shape低维与s_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>ignore_breeze</strong></td>
<td style="text-align: left;">该参数为True时,若预报和观测的风速都小于等于3级,则认为风向是正确的。</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">根据预报和观测的风向数据,统计得到的样本数、风向正确样本数、风向评分(分子部分),d_fo和d_ob的shape一致,则说明只有一家预报,此时返回一维的数据,size= 3。 如果d_fo和d_ob的shape不一致,则说明有多个预报,则返回的数据shape = (预报成员数,3)</td>
</tr>
</tbody>
</table>
<hr />
<p><strong><font face="黑体" color=blue size = 5>nas_uv(u_ob,u_fo,v_ob,v_fo, ignore_breeze = False)</font></strong><br />
基于u,v风分量,计算风向预报准确率,计算风向预报准确率和评分的中间量。</p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>u_ob</font></strong></td>
<td style="text-align: left;">观测的u分量,numpy数组</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>u_fo</font></strong></td>
<td style="text-align: left;">预报的u分量,numpy数组,shape和u_ob完全一致或比u_ob高一维(用于同时进行多家预报结果检验),u_fo.shape低维与u_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>v_ob</font></strong></td>
<td style="text-align: left;">观测的v分量,numpy数组,shape 和u_ob完全一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>v_fo</font></strong></td>
<td style="text-align: left;">预报的v分量,numpy数组,shape和u_ob完全一致或比u_ob高一维(用于同时进行多家预报结果检验),v_fo.shape低维与v_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>ignore_breeze</strong></td>
<td style="text-align: left;">该参数为True时,若预报和观测的风速都小于等于3级,则认为风向是正确的。</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">根据预报和观测的风向数据,统计得到的样本数、风向正确样本数、风向评分(分子部分),d_fo和d_ob的shape一致,则说明只有一家预报,此时返回一维的数据,size= 3。 如果d_fo和d_ob的shape不一致,则说明有多个预报,则返回的数据shape = (预报成员数,3)</td>
</tr>
</tbody>
</table>
<p><strong>调用示例:</strong> </p>
<pre><code class="language-python">nasd_array = mem.nas_d(d_ob,d_fo) #基于风向数据计算风向预报检验中间量
nasd_array</code></pre>
<pre><code>array([[5. , 1. , 2.2],
[5. , 1. , 2.8]])</code></pre>
<pre><code class="language-python">nasd_array = mem.nas_uv(u_ob,u_fo,v_ob,v_fo) #基于风向数据计算风向预报检验中间量
nasd_array</code></pre>
<pre><code>array([[5. , 1. , 2.2],
[5. , 1. , 2.8]])</code></pre>
<h1>风向预报误差统计中间量</h1>
<p><strong><font face="黑体" color=blue size = 5>tase_angle(d_ob, d_fo,s_ob = None,s_fo = None, ignore_breeze = False)</font></strong><br />
在计算风向准确率是,风向被人为的划分成8个方位,这种评价方法不能细致定量的评价风向的角度误差。若需要计算定量的风向误差,可以参考连续型变量的检验指标如me,mae,rmse等方法将风向角度作为连续的变量进行检验,但和一般连续变量不同,计算风向预报的偏差时,当观测和预报风向数值差error 大于180度时,实际风向误差等于360°- error;当error小于-180时,实际风向误差等于360+error,根据这个特定需求,设计了me_angle,mae_angle和rmse_angle等用于统计风向误差的算法。tase_angle则是用来统计误差所需的中间量</p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>d_ob</font></strong></td>
<td style="text-align: left;">观测的风向,numpy数组</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>d_fo</font></strong></td>
<td style="text-align: left;">预报的风向,numpy数组,numpy可以比d_ob高一维(用于同时进行多家预报结果检验),d_fo.shape低维与d_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>s_ob</strong></td>
<td style="text-align: left;">观测的风速,numpy数组,shape和d_ob完全一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>s_fo</strong></td>
<td style="text-align: left;">预报的风速,numpy数组,numpy可以比d_ob高一维(用于同时进行多家预报结果检验),s_fo.shape低维与s_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>ignore_breeze</strong></td>
<td style="text-align: left;">该参数为True时,若某个样本预报和观测的风速都小于等于3级,则该样本风向误差值直接会被设置为0。</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">根据预报和观测的风向数据,统计得到的样本数、风向误差总和、风向误差绝对值总和、风向误差平方和,d_fo和d_ob的shape一致,则说明只有一家预报,此时返回一维的数据,size= 4。 如果d_fo和d_ob的shape不一致,则说明有多个预报,则返回的数据shape = (预报成员数,4)</td>
</tr>
</tbody>
</table>
<hr />
<p><strong><font face="黑体" color=blue size = 5>tase_angle_uv(u_ob, u_fo, v_ob, v_fo,ignore_breeze = False)</strong><br />
基于u,v风分量,计算风向预报误差相关的中间量。</p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>u_ob</font></strong></td>
<td style="text-align: left;">观测的u分量,numpy数组</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>u_fo</font></strong></td>
<td style="text-align: left;">预报的u分量,numpy数组,shape和u_ob完全一致或比u_ob高一维(用于同时进行多家预报结果检验),u_fo.shape低维与u_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>v_ob</font></strong></td>
<td style="text-align: left;">观测的v分量,numpy数组,shape 和u_ob完全一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>v_fo</font></strong></td>
<td style="text-align: left;">预报的v分量,numpy数组,shape和u_ob完全一致或比u_ob高一维(用于同时进行多家预报结果检验),v_fo.shape低维与v_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>ignore_breeze</strong></td>
<td style="text-align: left;">该参数为True时,若某个样本预报和观测的风速都小于等于3级,则该样本风向误差值直接会被设置为0。</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">根据预报和观测的风向数据,统计得到的样本数、风向误差总和、风向误差绝对值总和、风向误差平方和,d_fo和d_ob的shape一致,则说明只有一家预报,此时返回一维的数据,size= 4。 如果d_fo和d_ob的shape不一致,则说明有多个预报,则返回的数据shape = (预报成员数,4)</td>
</tr>
</tbody>
</table>
<p><strong>调用示例:</strong> </p>
<pre><code class="language-python">tase_array = mem.tase_angle(d_ob,d_fo) #基于风向数据计算风向预报检验中间量
tase_array</code></pre>
<pre><code>array([[ 5.00000000e+00, -9.64503624e+01, 4.22103683e+02,
4.94532791e+04],
[ 5.00000000e+00, -2.32787072e+02, 3.62067002e+02,
3.91104834e+04]])</code></pre>
<pre><code class="language-python">tase_array = mem.tase_angle_uv(u_ob,u_fo,v_ob,v_fo) #基于风向数据计算风向预报检验中间量
tase_array</code></pre>
<pre><code>array([[ 5.00000000e+00, -9.64014662e+01, 4.22254703e+02,
4.94890080e+04],
[ 5.00000000e+00, -2.33034068e+02, 3.62248458e+02,
3.91629483e+04]])</code></pre>
<h1>风速检验中间量</h1>
<p><strong><font face="黑体" color=blue size = 5>nasws_s(s_ob,s_fo,min_s = 0,max_s = 300)</font></strong><br />
计算风向预报检验的中间量:样本数、正确数、累计得分,偏强数,偏弱数</p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>s_ob</font></strong></td>
<td style="text-align: left;">观测的风向,numpy数组</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>s_fo</font></strong></td>
<td style="text-align: left;">预报的风向,numpy数组,numpy可以比d_ob高一维(用于同时进行多家预报结果检验),fo.shape低维与ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>min_s</strong></td>
<td style="text-align: left;">过滤参数,当样本的预报或者观测的风速位于【min_s,max_s)区间时,会将样本纳入统计样本,否则会将样本删除</td>
</tr>
<tr>
<td style="text-align: left;"><strong>max_s</strong></td>
<td style="text-align: left;">过滤参数,当样本的预报或者观测的风速位于【min_s,max_s)区间时,会将样本纳入统计样本,否则会将样本删除</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">根据预报和观测的风速数据,统计得到的样本数、风速等级正确样本数、风速评分(分子部分),偏弱样本数,偏强样本数,d_fo和d_ob的shape一致,则说明只有一家预报,此时返回一维的数据,size= 5。 如果d_fo和d_ob的shape不一致,则说明有多个预报,则返回的数据shape = (预报成员数,5)</td>
</tr>
</tbody>
</table>
<hr />
<p><strong><font face="黑体" color=blue size = 5>nasws_uv(u_ob,u_fo,v_ob,v_fo,min_s = 0,max_s = 300)</font></strong><br />
根据u,v分量计算风向预报检验的中间量:样本数、正确数、累计得分,偏强数,偏弱数</p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>u_ob</font></strong></td>
<td style="text-align: left;">观测的u分量,numpy数组</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>u_fo</font></strong></td>
<td style="text-align: left;">预报的u分量,numpy数组,shape和u_ob完全一致或比u_ob高一维(用于同时进行多家预报结果检验),u_fo.shape低维与u_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>v_ob</font></strong></td>
<td style="text-align: left;">观测的v分量,numpy数组,shape 和u_ob完全一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>v_fo</font></strong></td>
<td style="text-align: left;">预报的v分量,numpy数组,shape和u_ob完全一致或比u_ob高一维(用于同时进行多家预报结果检验),v_fo.shape低维与v_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>min_s</strong></td>
<td style="text-align: left;">过滤参数,当样本的预报或者观测的风速位于【min_s,max_s)区间时,会将样本纳入统计样本,否则会将样本删除。</td>
</tr>
<tr>
<td style="text-align: left;"><strong>max_s</strong></td>
<td style="text-align: left;">过滤参数,当样本的预报或者观测的风速位于【min_s,max_s)区间时,会将样本纳入统计样本,否则会将样本删除。</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">根据预报和观测的风速数据,统计得到的样本数、风速等级正确样本数、风速评分(分子部分),偏弱样本数,偏强样本数,d_fo和d_ob的shape一致,则说明只有一家预报,此时返回一维的数据,size= 5。 如果d_fo和d_ob的shape不一致,则说明有多个预报,则返回的数据shape = (预报成员数,5)</td>
</tr>
</tbody>
</table>
<p><strong>调用示例:</strong> </p>
<pre><code class="language-python">nasws_array = mem.nasws_s(s_ob,s_fo) #基于风速数据计算风速预报检验中间量
nasws_array</code></pre>
<pre><code>array([[5. , 0. , 1.8, 1. , 4. ],
[5. , 0. , 0.6, 2. , 3. ]])</code></pre>
<pre><code class="language-python">nasws_array = mem.nasws_uv(u_ob,u_fo,v_ob,v_fo) #基于风速数据计算风速预报检验中间量
nasws_array</code></pre>
<pre><code>array([[5. , 0. , 1.8, 1. , 4. ],
[5. , 0. , 0.6, 2. , 3. ]])</code></pre>
<h1>风综合检验中间量</h1>
<p><strong><font face="黑体" color=blue size = 5>na_ds(s_ob,s_fo,min_s = 0,max_s = 300)</font></strong><br />
计算风综合检验中间量:样本数、正确数 </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>d_ob</font></strong></td>
<td style="text-align: left;">观测的风向,numpy数组</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>d_fo</font></strong></td>
<td style="text-align: left;">预报的风向,numpy数组,numpy可以比d_ob高一维(用于同时进行多家预报结果检验),d_fo.shape低维与d_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>s_ob</font></strong></td>
<td style="text-align: left;">观测的风速,numpy数组,shape和d_ob完全一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>s_fo</font></strong></td>
<td style="text-align: left;">预报的风速,numpy数组,numpy可以比d_ob高一维(用于同时进行多家预报结果检验),s_fo.shape低维与s_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">根据预报和观测的风向风速,统计得到的样本数、风向风速都正确的样本数,d_fo和d_ob的shape一致,则说明只有一家预报,此时返回一维的数据,size= 2。 如果d_fo和d_ob的shape不一致,则说明有多个预报,则返回的数据shape = (预报成员数,2)</td>
</tr>
</tbody>
</table>
<hr />
<p><strong><font face="黑体" color=blue size = 5>na_uv(u_ob,u_fo,v_ob,v_fo,min_s = 0,max_s = 300)</font></strong><br />
根据u,v分量风综合检验中间量:样本数、正确数 </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>u_ob</font></strong></td>
<td style="text-align: left;">观测的u分量,numpy数组</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>u_fo</font></strong></td>
<td style="text-align: left;">预报的u分量,numpy数组,shape和u_ob完全一致或比u_ob高一维(用于同时进行多家预报结果检验),u_fo.shape低维与u_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>v_ob</font></strong></td>
<td style="text-align: left;">观测的v分量,numpy数组,shape 和u_ob完全一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>v_fo</font></strong></td>
<td style="text-align: left;">预报的v分量,numpy数组,shape和u_ob完全一致或比u_ob高一维(用于同时进行多家预报结果检验),v_fo.shape低维与v_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">根据预报和观测的风向风速,统计得到的样本数、风向风速都正确的样本数,d_fo和d_ob的shape一致,则说明只有一家预报,此时返回一维的数据,size= 2。 如果d_fo和d_ob的shape不一致,则说明有多个预报,则返回的数据shape = (预报成员数,2)</td>
</tr>
</tbody>
</table>
<p><strong>调用示例:</strong> </p>
<pre><code class="language-python">na_array = mem.na_ds(d_ob,d_fo,s_ob,s_fo) #基于风速数据计算风速预报检验中间量
na_array</code></pre>
<pre><code>array([[5., 0.],
[5., 0.]])</code></pre>
<pre><code class="language-python">na_array = mem.na_uv(u_ob,u_fo,v_ob,v_fo) #基于风速数据计算风速预报检验中间量
na_array</code></pre>
<pre><code>array([[5., 0.],
[5., 0.]])</code></pre>
<h1>风向预报准确率</h1>
<p><strong><font face="黑体" color=blue size = 5>acd(d_ob,d_fo,s_ob = None,s_fo = None, ignore_breeze = False,unit = 1)</font></strong><br />
基于原始风向数组,计算风向预报准确率,计算的第一步是将预报和观测的风向都转换成8个离散的方位角,
当预报和观测的方位角正好相同时,就记为正确,否则记为错误,风向预报准确率时正确样本数/总样本数。 </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>d_ob</font></strong></td>
<td style="text-align: left;">观测的风向,numpy数组</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>d_fo</font></strong></td>
<td style="text-align: left;">预报的风向,numpy数组,numpy可以比d_ob高一维(用于同时进行多家预报结果检验),d_fo.shape低维与d_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>s_ob</strong></td>
<td style="text-align: left;">观测的风速,numpy数组,shape和d_ob完全一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>s_fo</strong></td>
<td style="text-align: left;">预报的风速,numpy数组,numpy可以比d_ob高一维(用于同时进行多家预报结果检验),s_fo.shape低维与s_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>ignore_breeze</strong></td>
<td style="text-align: left;">该参数为True时,若预报和观测的风速都小于等于3级,则认为风向是正确的。</td>
</tr>
<tr>
<td style="text-align: left;"><strong>unit</strong></td>
<td style="text-align: left;">该值为缺省值1时,返回0-1的结果,当unit = "%"时,返回0-100的结果,即返回值的单位是%,设置unit="%"更加适合用于制作需要填值的绘图场景,因为"45" 比"0.45"的节省了2个字符</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">风向预报准确率,如果d_fo和d_ob的shape一致,说明只有一家预报,则返回实数,否则说明是在同时检验多家预报,返回结果为一维数组</td>
</tr>
</tbody>
</table>
<h1>风向预报准确率_uv</h1>
<p><strong><font face="黑体" color=blue size = 5>acd_uv(u_ob,u_fo,v_ob,v_fo, ignore_breeze = False,unit = 1)</font></strong><br />
基于u,v风分量,计算风向预报准确率。计算的第一步是将预报和观测的风向都转换成8个离散的方位角,
当一个样本的预报观测方位角正好相同时,得1分,方位角差1级,得0.6分,否则得0分。风向评分等于所有样本得分的平均。 </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>u_ob</font></strong></td>
<td style="text-align: left;">观测的u分量,numpy数组</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>u_fo</font></strong></td>
<td style="text-align: left;">预报的u分量,numpy数组,shape和u_ob完全一致或比u_ob高一维(用于同时进行多家预报结果检验),u_fo.shape低维与u_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>v_ob</font></strong></td>
<td style="text-align: left;">观测的v分量,numpy数组,shape 和u_ob完全一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>v_fo</font></strong></td>
<td style="text-align: left;">预报的v分量,numpy数组,shape和u_ob完全一致或比u_ob高一维(用于同时进行多家预报结果检验),v_fo.shape低维与v_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>ignore_breeze</strong></td>
<td style="text-align: left;">该参数为True时,若预报和观测的风速都小于等于3级,则认为风向是正确的。</td>
</tr>
<tr>
<td style="text-align: left;"><strong>unit</strong></td>
<td style="text-align: left;">该值为缺省值1时,返回0-1的结果,当unit = "%"时,返回0-100的结果,即返回值的单位是%,设置unit="%"更加适合用于制作需要填值的绘图场景,因为"45" 比"0.45"的节省了2个字符</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">风向预报准确率,如果d_fo和d_ob的shape一致,说明只有一家预报,则返回实数,否则说明是在同时检验多家预报,返回结果为一维数组</td>
</tr>
</tbody>
</table>
<h1>风向预报准确率_基于中间结果</h1>
<p><strong><font face="黑体" color=blue size = 5>acd_nas(nasd_array,unit = 1)</font></strong><br />
基于中间结果,计算风向预报准确率。</p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>nasd_array</font></strong></td>
<td style="text-align: left;">包含检验中间结果的多维数组,其中最后一维长度为3,分别记录了样本数数,正确数和累计评分(分子部分),它通常是nas_d或nas_uv函数的计算结果,或者计算结果的累加</td>
</tr>
<tr>
<td style="text-align: left;"><strong>unit</strong></td>
<td style="text-align: left;">该值为缺省值1时,返回0-1的结果,当unit = "%"时,返回0-100的结果,即返回值的单位是%,设置unit="%"更加适合用于制作需要填值的绘图场景,因为"45" 比"0.45"的节省了2个字符</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">风向预报准确率,整数或数组,它比nasd_array少了最后一维</td>
</tr>
</tbody>
</table>
<p><strong>调用示例:</strong> </p>
<pre><code class="language-python">mem.acd(d_ob,d_fo) #基于风向数据计算风向预报准确率</code></pre>
<pre><code>array([0.2, 0.2])</code></pre>
<pre><code class="language-python">mem.acd(d_ob,d_fo,s_ob,s_fo,ignore_breeze=True) # 忽略微风的风向差异</code></pre>
<pre><code>array([0.2, 0.4])</code></pre>
<pre><code class="language-python">mem.acd_uv(u_ob,u_fo,v_ob,v_fo) #基于u,v风分量计算风向预报准确率</code></pre>
<pre><code>array([0.2, 0.2])</code></pre>
<pre><code class="language-python">mem.acd_uv(u_ob,u_fo,v_ob,v_fo,ignore_breeze=True) # 忽略微风的风向差异</code></pre>
<pre><code>array([0.2, 0.4])</code></pre>
<pre><code class="language-python">mem.acd_nas(nasd_array) #基于中间结果计算风向预报准确率</code></pre>
<pre><code>array([0.2, 0.2])</code></pre>
<h1>风向预报评分</h1>
<p><strong><font face="黑体" color=blue size = 5>scd(d_ob,d_fo,s_ob = None,s_fo = None, ignore_breeze = False)</font></strong><br />
基于原始风向数组,计算风向预报评分,计算的第一步是将预报和观测的风向都转换成8个离散的方位角,
当一个样本的预报观测方位角正好相同时,得1分,方位角差1级,得0.6分,否则得0分。风向评分等于所有样本得分的平均。</p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>d_ob</font></strong></td>
<td style="text-align: left;">观测的风向,numpy数组</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>d_fo</font></strong></td>
<td style="text-align: left;">预报的风向,numpy数组,numpy可以比d_ob高一维(用于同时进行多家预报结果检验),d_fo.shape低维与d_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>s_ob</strong></td>
<td style="text-align: left;">观测的风速,numpy数组,shape和d_ob完全一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>s_fo</strong></td>
<td style="text-align: left;">预报的风速,numpy数组,numpy可以比d_ob高一维(用于同时进行多家预报结果检验),s_fo.shape低维与s_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>ignore_breeze</strong></td>
<td style="text-align: left;">该参数为True时,若预报和观测的风速都小于等于3级,则认为风向是正确的。</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">风向预报评分,如果d_fo和d_ob的shape一致,说明只有一家预报,则返回实数,否则说明是在同时检验多家预报,返回结果为一维数组</td>
</tr>
</tbody>
</table>
<h1>风向预报评分_uv</h1>
<p><strong><font face="黑体" color=blue size = 5>scd_uv(u_ob,u_fo,v_ob,v_fo, ignore_breeze = False)</font></strong><br />
基于u,v风分量,计算风向预报评分。计算的第一步是将预报和观测的风向都转换成8个离散的方位角,
当一个样本的预报观测方位角正好相同时,得1分,方位角差1级,得0.6分,否则得0分。风向评分等于所有样本得分的平均。</p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>u_ob</font></strong></td>
<td style="text-align: left;">观测的u分量,numpy数组</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>u_fo</font></strong></td>
<td style="text-align: left;">预报的u分量,numpy数组,shape和u_ob完全一致或比u_ob高一维(用于同时进行多家预报结果检验),u_fo.shape低维与u_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>v_ob</font></strong></td>
<td style="text-align: left;">观测的v分量,numpy数组,shape 和u_ob完全一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>v_fo</font></strong></td>
<td style="text-align: left;">预报的v分量,numpy数组,shape和u_ob完全一致或比u_ob高一维(用于同时进行多家预报结果检验),v_fo.shape低维与v_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>ignore_breeze</strong></td>
<td style="text-align: left;">该参数为True时,若预报和观测的风速都小于等于3级,则认为风向是正确的。</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">风向预报评分,如果d_fo和d_ob的shape一致,说明只有一家预报,则返回实数,否则说明是在同时检验多家预报,返回结果为一维数组</td>
</tr>
</tbody>
</table>
<h1>风向预报评分_基于中间结果</h1>
<p><strong><font face="黑体" color=blue size = 5>scd_nas(nasd_array)</font></strong><br />
基于中间结果,计算风向预报评分。</p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>nasd_array</font></strong></td>
<td style="text-align: left;">包含检验中间结果的多维数组,其中最后一维长度为3,分别记录了样本数数,正确数和累计评分(分子部分),它通常是nas_d或nas_uv函数的计算结果,或者计算结果的累加</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">风向预报评分,整数或数组,它比nasd_array少了最后一维</td>
</tr>
</tbody>
</table>
<p><strong>调用示例:</strong> </p>
<pre><code class="language-python">mem.scd(d_ob,d_fo) #基于风向数据计算风向预报评分</code></pre>
<pre><code>array([0.44, 0.56])</code></pre>
<pre><code class="language-python">mem.scd(d_ob,d_fo,s_ob,s_fo,ignore_breeze=True) # 忽略微风的风向差异</code></pre>
<pre><code>array([0.44, 0.64])</code></pre>
<pre><code class="language-python">mem.scd_uv(u_ob,u_fo,v_ob,v_fo) #基于u,v风分量计算风向预报评分</code></pre>
<pre><code>array([0.44, 0.56])</code></pre>
<pre><code class="language-python">mem.scd_uv(u_ob,u_fo,v_ob,v_fo,ignore_breeze=True) # 忽略微风的风向差异</code></pre>
<pre><code>array([0.44, 0.64])</code></pre>
<pre><code class="language-python">mem.scd_nas(nasd_array) #基于中间结果计算风向预报评分</code></pre>
<pre><code>array([0.44, 0.56])</code></pre>
<h1>风速预报准确率</h1>
<p><strong><font face="黑体" color=blue size = 5>acs(s_ob,s_fo,min_s = 0,max_s = 300,unit = 1)</font></strong><br />
基于原始风速数组,计算风速预报准确率.计算的第一步是将预报和观测的风向都转换成14个离散的风速等级,
当一个样本的预报和观测风速等级正好相同时,记为正确,否则记为错误。风速评分等于所有样本得分的平均。 </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>s_ob</font></strong></td>
<td style="text-align: left;">观测的风向,numpy数组</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>s_fo</font></strong></td>
<td style="text-align: left;">预报的风向,numpy数组,numpy可以比d_ob高一维(用于同时进行多家预报结果检验),fo.shape低维与ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>min_s</strong></td>
<td style="text-align: left;">过滤参数,当样本的预报或者观测的风速位于【min_s,max_s)区间时,会将样本纳入统计样本,否则会将样本删除</td>
</tr>
<tr>
<td style="text-align: left;"><strong>max_s</strong></td>
<td style="text-align: left;">过滤参数,当样本的预报或者观测的风速位于【min_s,max_s)区间时,会将样本纳入统计样本,否则会将样本删除</td>
</tr>
<tr>
<td style="text-align: left;"><strong>unit</strong></td>
<td style="text-align: left;">该值为缺省值1时,返回0-1的结果,当unit = "%"时,返回0-100的结果,即返回值的单位是%,设置unit="%"更加适合用于制作需要填值的绘图场景,因为"45" 比"0.45"的节省了2个字符</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">风速预报准确率,如果d_fo和d_ob的shape一致,说明只有一家预报,则返回实数,否则说明是在同时检验多家预报,返回结果为一维数组</td>
</tr>
</tbody>
</table>
<h1>风速预报准确率_uv</h1>
<p><strong><font face="黑体" color=blue size = 5>acs_uv(u_ob, u_fo, v_ob, v_fo, min_s = 0,max_s = 300,unit = 1)</font></strong><br />
基于u,v风分量,计算风速预报准确率。计算的第一步是将预报和观测的风向都转换成14个离散的风速等级,
当一个样本的预报和观测风速等级正好相同时,记为正确,否则记为错误。风速评分等于所有样本得分的平均。 </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>u_ob</font></strong></td>
<td style="text-align: left;">观测的u分量,numpy数组</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>u_fo</font></strong></td>
<td style="text-align: left;">预报的u分量,numpy数组,shape和u_ob完全一致或比u_ob高一维(用于同时进行多家预报结果检验),u_fo.shape低维与u_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>v_ob</font></strong></td>
<td style="text-align: left;">观测的v分量,numpy数组,shape 和u_ob完全一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>v_fo</font></strong></td>
<td style="text-align: left;">预报的v分量,numpy数组,shape和u_ob完全一致或比u_ob高一维(用于同时进行多家预报结果检验),v_fo.shape低维与v_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>min_s</strong></td>
<td style="text-align: left;">过滤参数,当样本的预报或者观测的风速位于【min_s,max_s)区间时,会将样本纳入统计样本,否则会将样本删除。</td>
</tr>
<tr>
<td style="text-align: left;"><strong>max_s</strong></td>
<td style="text-align: left;">过滤参数,当样本的预报或者观测的风速位于【min_s,max_s)区间时,会将样本纳入统计样本,否则会将样本删除。</td>
</tr>
<tr>
<td style="text-align: left;"><strong>unit</strong></td>
<td style="text-align: left;">该值为缺省值1时,返回0-1的结果,当unit = "%"时,返回0-100的结果,即返回值的单位是%,设置unit="%"更加适合用于制作需要填值的绘图场景,因为"45" 比"0.45"的节省了2个字符</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">风速预报准确率,如果d_fo和d_ob的shape一致,说明只有一家预报,则返回实数,否则说明是在同时检验多家预报,返回结果为一维数组</td>
</tr>
</tbody>
</table>
<h1>风速预报准确率_基于中间结果</h1>
<p><strong><font face="黑体" color=blue size = 5>acs_nasws(nasws_array,unit = 1)</font></strong><br />
基于中间结果,计算风速预报准确率。</p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>nasws_array</font></strong></td>
<td style="text-align: left;">包含检验中间结果的多维数组,其中最后一维长度为5,分别记录了样本数数,正确数和累计评分(分子部分),偏弱样本数和偏强样本数,它通常是nasws_s或nasws_uv函数的计算结果,或者计算结果的累加</td>
</tr>
<tr>
<td style="text-align: left;"><strong>unit</strong></td>
<td style="text-align: left;">该值为缺省值1时,返回0-1的结果,当unit = "%"时,返回0-100的结果,即返回值的单位是%,设置unit="%"更加适合用于制作需要填值的绘图场景,因为"45" 比"0.45"的节省了2个字符</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">风速预报准确率,整数或数组,它比nasws_array少了最后一维</td>
</tr>
</tbody>
</table>
<p><strong>调用示例:</strong> </p>
<pre><code class="language-python">mem.acs(s_ob,s_fo) #基于风速数据计算风速预报准确率</code></pre>
<pre><code>array([0., 0.])</code></pre>
<pre><code class="language-python">#设置过滤参数,评价蒲福风力等级在6-8级的风的风速预报准确率。
#meb.beaufort_scale[n] 为系统内置的蒲福风力等级为n的风速阈值
mem.acs(s_ob,s_fo,meb.beaufort_scale[6],meb.beaufort_scale[9])</code></pre>
<pre><code>array([0., 0.])</code></pre>
<pre><code class="language-python">mem.acs_uv(u_ob,u_fo,v_ob,v_fo) #基于u,v分量计算风速预报准确率</code></pre>
<pre><code>array([0., 0.])</code></pre>
<pre><code class="language-python">#设置过滤参数,评价蒲福风力等级在6-8级的风的风速预报准确率。
#meb.beaufort_scale[n] 为系统内置的蒲福风力等级为n的风速阈值
mem.acs_uv(u_ob,u_fo,v_ob,v_fo,meb.beaufort_scale[6],meb.beaufort_scale[9]) </code></pre>
<pre><code>array([0., 0.])</code></pre>
<pre><code class="language-python">mem.acs_nasws(nasws_array) #基于中间结果计算风速准确率</code></pre>
<pre><code>array([0., 0.])</code></pre>
<h1>风速预报评分</h1>
<p><strong><font face="黑体" color=blue size = 5>scs(s_ob,s_fo,min_s = 0,max_s = 300)</font></strong><br />
基于原始风速数组,计算风速预报评分.计算的第一步是将预报和观测的风向都转换成14个离散的风速等级,当一个样本的预报和观测风速等级正好相同时,得1分,等级差1级,得0.6分,等级差2级得0.4分,否则不得分。风速评分等于所有样本得分的平均。</p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>s_ob</font></strong></td>
<td style="text-align: left;">观测的风向,numpy数组</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>s_fo</font></strong></td>
<td style="text-align: left;">预报的风向,numpy数组,numpy可以比d_ob高一维(用于同时进行多家预报结果检验),fo.shape低维与ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>min_s</strong></td>
<td style="text-align: left;">过滤参数,当样本的预报或者观测的风速位于【min_s,max_s)区间时,会将样本纳入统计样本,否则会将样本删除</td>
</tr>
<tr>
<td style="text-align: left;"><strong>max_s</strong></td>
<td style="text-align: left;">过滤参数,当样本的预报或者观测的风速位于【min_s,max_s)区间时,会将样本纳入统计样本,否则会将样本删除</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">风速预报评分,如果d_fo和d_ob的shape一致,说明只有一家预报,则返回实数,否则说明是在同时检验多家预报,返回结果为一维数组</td>
</tr>
</tbody>
</table>
<h1>风速预报评分_uv</h1>
<p><strong><font face="黑体" color=blue size = 5>scs_uv(u_ob, u_fo, v_ob, v_fo, min_s = 0,max_s = 300)</font></strong><br />
基于u,v风分量,计算风速预报评分。计算的第一步是将预报和观测的风向都转换成14个离散的风速等级,当一个样本的预报和观测风速等级正好相同时,得1分,等级差1级,得0.6分,等级差2级得0.4分,否则不得分。风速评分等于所有样本得分的平均。 </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>u_ob</font></strong></td>
<td style="text-align: left;">观测的u分量,numpy数组</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>u_fo</font></strong></td>
<td style="text-align: left;">预报的u分量,numpy数组,shape和u_ob完全一致或比u_ob高一维(用于同时进行多家预报结果检验),u_fo.shape低维与u_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>v_ob</font></strong></td>
<td style="text-align: left;">观测的v分量,numpy数组,shape 和u_ob完全一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>v_fo</font></strong></td>
<td style="text-align: left;">预报的v分量,numpy数组,shape和u_ob完全一致或比u_ob高一维(用于同时进行多家预报结果检验),v_fo.shape低维与v_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>min_s</strong></td>
<td style="text-align: left;">过滤参数,当样本的预报或者观测的风速位于【min_s,max_s)区间时,会将样本纳入统计样本,否则会将样本删除。</td>
</tr>
<tr>
<td style="text-align: left;"><strong>max_s</strong></td>
<td style="text-align: left;">过滤参数,当样本的预报或者观测的风速位于【min_s,max_s)区间时,会将样本纳入统计样本,否则会将样本删除。</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">风速预报评分,如果d_fo和d_ob的shape一致,说明只有一家预报,则返回实数,否则说明是在同时检验多家预报,返回结果为一维数组</td>
</tr>
</tbody>
</table>
<h1>风速预报评分_基于中间结果</h1>
<p><strong><font face="黑体" color=blue size = 5>scs_nasws(nasws_array)</font></strong><br />
基于中间结果,计算风速预报评分。</p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>nasws_array</font></strong></td>
<td style="text-align: left;">包含检验中间结果的多维数组,其中最后一维长度为5,分别记录了样本数数,正确数和累计评分(分子部分),偏弱样本数和偏强样本数,它通常是nasws_s或nasws_uv函数的计算结果,或者计算结果的累加</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">风速预报评分,整数或数组,它比nasws_array少了最后一维</td>
</tr>
</tbody>
</table>
<p><strong>调用示例:</strong> </p>
<pre><code class="language-python">mem.scs(s_ob,s_fo) #基于风速数据计算风速预报评分</code></pre>
<pre><code>array([0.36, 0.12])</code></pre>
<pre><code class="language-python">#设置过滤参数,评价蒲福风力等级在6-8级的风的风速预报评分。
#meb.beaufort_scale[n] 为系统内置的蒲福风力等级为n的风速阈值
mem.scs(s_ob,s_fo,meb.beaufort_scale[6],meb.beaufort_scale[9])</code></pre>
<pre><code>array([0.3, 0. ])</code></pre>
<pre><code class="language-python">mem.scs_uv(u_ob,u_fo,v_ob,v_fo) #基于u,v分量计算风速预报评分</code></pre>
<pre><code>array([0.36, 0.12])</code></pre>
<pre><code class="language-python">#设置过滤参数,评价蒲福风力等级在6-8级的风的风速预报评分。
#meb.beaufort_scale[n] 为系统内置的蒲福风力等级为n的风速阈值
mem.scs_uv(u_ob,u_fo,v_ob,v_fo,meb.beaufort_scale[6],meb.beaufort_scale[9]) </code></pre>
<pre><code>array([0.3, 0. ])</code></pre>
<pre><code class="language-python">mem.scs_nasws(nasws_array) #基于中间结果计算风速预报评分</code></pre>
<pre><code>array([0.36, 0.12])</code></pre>
<h1>风速预报偏强率</h1>
<p><strong><font face="黑体" color=blue size = 5>wind_severer_rate(s_ob,s_fo,min_s = 0,max_s = 300,unit = 1)</font></strong><br />
基于原始风速数组,计算风速预报偏强率.计算的第一步是将预报和观测的风向都转换成14个离散的风速等级,
当预报风速等级大于观测风速等级时记为1,否则记为0,偏强率是偏强的样本数/总样本数。</p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>s_ob</font></strong></td>
<td style="text-align: left;">观测的风向,numpy数组</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>s_fo</font></strong></td>
<td style="text-align: left;">预报的风向,numpy数组,numpy可以比d_ob高一维(用于同时进行多家预报结果检验),fo.shape低维与ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>min_s</strong></td>
<td style="text-align: left;">过滤参数,当样本的预报或者观测的风速位于【min_s,max_s)区间时,会将样本纳入统计样本,否则会将样本删除</td>
</tr>
<tr>
<td style="text-align: left;"><strong>max_s</strong></td>
<td style="text-align: left;">过滤参数,当样本的预报或者观测的风速位于【min_s,max_s)区间时,会将样本纳入统计样本,否则会将样本删除</td>
</tr>
<tr>
<td style="text-align: left;"><strong>unit</strong></td>
<td style="text-align: left;">该值为缺省值1时,返回0-1的结果,当unit = "%"时,返回0-100的结果,即返回值的单位是%,设置unit="%"更加适合用于制作需要填值的绘图场景,因为"45" 比"0.45"的节省了2个字符</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">风速预报偏强率,如果d_fo和d_ob的shape一致,说明只有一家预报,则返回实数,否则说明是在同时检验多家预报,返回结果为一维数组</td>
</tr>
</tbody>
</table>
<h1>风速预报偏强率_uv</h1>
<p><strong><font face="黑体" color=blue size = 5>wind_severer_rate_uv(u_ob, u_fo, v_ob, v_fo, min_s = 0,max_s = 300,unit = 1)</font></strong><br />
基于u,v风分量,计算风速预报偏强率。计算的第一步是将预报和观测的风向都转换成14个离散的风速等级,
当预报风速等级大于观测风速等级时记为1,否则记为0,偏强率是偏强的样本数/总样本数。 </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>u_ob</font></strong></td>
<td style="text-align: left;">观测的u分量,numpy数组</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>u_fo</font></strong></td>
<td style="text-align: left;">预报的u分量,numpy数组,shape和u_ob完全一致或比u_ob高一维(用于同时进行多家预报结果检验),u_fo.shape低维与u_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>v_ob</font></strong></td>
<td style="text-align: left;">观测的v分量,numpy数组,shape 和u_ob完全一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>v_fo</font></strong></td>
<td style="text-align: left;">预报的v分量,numpy数组,shape和u_ob完全一致或比u_ob高一维(用于同时进行多家预报结果检验),v_fo.shape低维与v_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>min_s</strong></td>
<td style="text-align: left;">过滤参数,当样本的预报或者观测的风速位于【min_s,max_s)区间时,会将样本纳入统计样本,否则会将样本删除。</td>
</tr>
<tr>
<td style="text-align: left;"><strong>max_s</strong></td>
<td style="text-align: left;">过滤参数,当样本的预报或者观测的风速位于【min_s,max_s)区间时,会将样本纳入统计样本,否则会将样本删除。</td>
</tr>
<tr>
<td style="text-align: left;"><strong>unit</strong></td>
<td style="text-align: left;">该值为缺省值1时,返回0-1的结果,当unit = "%"时,返回0-100的结果,即返回值的单位是%,设置unit="%"更加适合用于制作需要填值的绘图场景,因为"45" 比"0.45"的节省了2个字符</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">风速预报偏强率,如果d_fo和d_ob的shape一致,说明只有一家预报,则返回实数,否则说明是在同时检验多家预报,返回结果为一维数组</td>
</tr>
</tbody>
</table>
<h1>风速预报偏强率_基于中间结果</h1>
<p><strong><font face="黑体" color=blue size = 5>wind_severer_rate_nasws(nasws_array,unit = 1)</font></strong><br />
基于中间结果,计算风速预报偏强率。</p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>nasws_array</font></strong></td>
<td style="text-align: left;">包含检验中间结果的多维数组,其中最后一维长度为5,分别记录了样本数数,正确数和累计评分(分子部分),偏弱样本数和偏强样本数,它通常是nasws_s或nasws_uv函数的计算结果,或者计算结果的累加</td>
</tr>
<tr>
<td style="text-align: left;"><strong>unit</strong></td>
<td style="text-align: left;">该值为缺省值1时,返回0-1的结果,当unit = "%"时,返回0-100的结果,即返回值的单位是%,设置unit="%"更加适合用于制作需要填值的绘图场景,因为"45" 比"0.45"的节省了2个字符</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">风速预报偏强率,整数或数组,它比nasws_array少了最后一维</td>
</tr>
</tbody>
</table>
<p><strong>调用示例:</strong> </p>
<pre><code class="language-python">mem.wind_severer_rate(s_ob,s_fo) #基于风速数据计算风速预报偏强率</code></pre>
<pre><code>array([0.8, 0.6])</code></pre>
<pre><code class="language-python">#设置过滤参数,评价蒲福风力等级在6-8级的风的风速预报的偏强率。
#meb.beaufort_scale[n] 为系统内置的蒲福风力等级为n的风速阈值
mem.wind_severer_rate(s_ob,s_fo,meb.beaufort_scale[6],meb.beaufort_scale[9])</code></pre>
<pre><code>array([1., 1.])</code></pre>
<pre><code class="language-python">mem.wind_severer_rate_uv(u_ob, u_fo, v_ob, v_fo) #基于u,v计算风速预报偏强率</code></pre>
<pre><code>array([0.8, 0.6])</code></pre>
<pre><code class="language-python">#设置过滤参数,评价蒲福风力等级在6-8级的风的风速预报的偏强率。
#meb.beaufort_scale[n] 为系统内置的蒲福风力等级为n的风速阈值
mem.wind_severer_rate_uv(u_ob, u_fo, v_ob, v_fo,meb.beaufort_scale[6],meb.beaufort_scale[9]) </code></pre>
<pre><code>array([1., 1.])</code></pre>
<pre><code class="language-python">mem.wind_severer_rate_nasws(nasws_array) #基于中间结果计算风速预报偏强率</code></pre>
<pre><code>array([0.8, 0.6])</code></pre>
<h1>风速预报偏弱率</h1>
<p><strong><font face="黑体" color=blue size = 5>wind_weaker_rate(s_ob,s_fo,min_s = 0,max_s = 300,unit = 1)</font></strong><br />
基于原始风速数组,计算风速预报偏弱率.计算的第一步是将预报和观测的风向都转换成14个离散的风速等级,
当预报风速等级小于观测风速等级时记为1,否则记为0,偏弱率是偏强的样本数/总样本数。</p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>s_ob</font></strong></td>
<td style="text-align: left;">观测的风向,numpy数组</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>s_fo</font></strong></td>
<td style="text-align: left;">预报的风向,numpy数组,numpy可以比d_ob高一维(用于同时进行多家预报结果检验),fo.shape低维与ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>min_s</strong></td>
<td style="text-align: left;">过滤参数,当样本的预报或者观测的风速位于【min_s,max_s)区间时,会将样本纳入统计样本,否则会将样本删除</td>
</tr>
<tr>
<td style="text-align: left;"><strong>max_s</strong></td>
<td style="text-align: left;">过滤参数,当样本的预报或者观测的风速位于【min_s,max_s)区间时,会将样本纳入统计样本,否则会将样本删除</td>
</tr>
<tr>
<td style="text-align: left;"><strong>unit</strong></td>
<td style="text-align: left;">该值为缺省值1时,返回0-1的结果,当unit = "%"时,返回0-100的结果,即返回值的单位是%,设置unit="%"更加适合用于制作需要填值的绘图场景,因为"45" 比"0.45"的节省了2个字符</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">风速预报偏弱率,如果d_fo和d_ob的shape一致,说明只有一家预报,则返回实数,否则说明是在同时检验多家预报,返回结果为一维数组</td>
</tr>
</tbody>
</table>
<h1>风速预报偏弱率_uv</h1>
<p><strong><font face="黑体" color=blue size = 5>wind_weaker_rate_uv(u_ob, u_fo, v_ob, v_fo, min_s = 0,max_s = 300,unit = 1)</font></strong><br />
基于u,v风分量,计算风速预报偏弱率。计算的第一步是将预报和观测的风向都转换成14个离散的风速等级,
当预报风速等级小于观测风速等级时记为1,否则记为0,偏弱率是偏强的样本数/总样本数。 </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>u_ob</font></strong></td>
<td style="text-align: left;">观测的u分量,numpy数组</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>u_fo</font></strong></td>
<td style="text-align: left;">预报的u分量,numpy数组,shape和u_ob完全一致或比u_ob高一维(用于同时进行多家预报结果检验),u_fo.shape低维与u_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>v_ob</font></strong></td>
<td style="text-align: left;">观测的v分量,numpy数组,shape 和u_ob完全一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>v_fo</font></strong></td>
<td style="text-align: left;">预报的v分量,numpy数组,shape和u_ob完全一致或比u_ob高一维(用于同时进行多家预报结果检验),v_fo.shape低维与v_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>min_s</strong></td>
<td style="text-align: left;">过滤参数,当样本的预报或者观测的风速位于【min_s,max_s)区间时,会将样本纳入统计样本,否则会将样本删除。</td>
</tr>
<tr>
<td style="text-align: left;"><strong>max_s</strong></td>
<td style="text-align: left;">过滤参数,当样本的预报或者观测的风速位于【min_s,max_s)区间时,会将样本纳入统计样本,否则会将样本删除。</td>
</tr>
<tr>
<td style="text-align: left;"><strong>unit</strong></td>
<td style="text-align: left;">该值为缺省值1时,返回0-1的结果,当unit = "%"时,返回0-100的结果,即返回值的单位是%,设置unit="%"更加适合用于制作需要填值的绘图场景,因为"45" 比"0.45"的节省了2个字符</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">风速预报偏弱率,如果d_fo和d_ob的shape一致,说明只有一家预报,则返回实数,否则说明是在同时检验多家预报,返回结果为一维数组</td>
</tr>
</tbody>
</table>
<h1>风速预报偏弱率_基于中间结果</h1>
<p><strong><font face="黑体" color=blue size = 5>wind_weaker_rate_nasws(nasws_array,unit = 1)</font></strong><br />
基于中间结果,计算风速预报偏弱率。</p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>nasws_array</font></strong></td>
<td style="text-align: left;">包含检验中间结果的多维数组,其中最后一维长度为5,分别记录了样本数数,正确数和累计评分(分子部分),偏弱样本数和偏强样本数,它通常是nasws_s或nasws_uv函数的计算结果,或者计算结果的累加</td>
</tr>
<tr>
<td style="text-align: left;"><strong>unit</strong></td>
<td style="text-align: left;">该值为缺省值1时,返回0-1的结果,当unit = "%"时,返回0-100的结果,即返回值的单位是%,设置unit="%"更加适合用于制作需要填值的绘图场景,因为"45" 比"0.45"的节省了2个字符</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">风速预报偏弱率,整数或数组,它比nasws_array少了最后一维</td>
</tr>
</tbody>
</table>
<p><strong>调用示例:</strong> </p>
<pre><code class="language-python">mem.wind_weaker_rate(s_ob,s_fo) #基于风速数据计算风速预报偏弱率</code></pre>
<pre><code>array([0.2, 0.4])</code></pre>
<pre><code class="language-python">#设置过滤参数,评价蒲福风力等级在6-8级的风的风速预报的偏弱率
#meb.beaufort_scale[n] 为系统内置的蒲福风力等级为n的风速阈值
mem.wind_weaker_rate(s_ob,s_fo,meb.beaufort_scale[6],meb.beaufort_scale[9])</code></pre>
<pre><code>array([0., 0.])</code></pre>
<pre><code class="language-python">mem.wind_weaker_rate_uv(u_ob, u_fo, v_ob, v_fo) #基于u,v计算风速预报偏弱率</code></pre>
<pre><code>array([0.2, 0.4])</code></pre>
<pre><code class="language-python">#设置过滤参数,评价蒲福风力等级在6-8级的风的风速预报的偏弱率
#meb.beaufort_scale[n] 为系统内置的蒲福风力等级为n的风速阈值
mem.wind_weaker_rate_uv(u_ob, u_fo, v_ob, v_fo,meb.beaufort_scale[6],meb.beaufort_scale[9]) </code></pre>
<pre><code>array([0., 0.])</code></pre>
<pre><code class="language-python">mem.wind_weaker_rate_nasws(nasws_array) #基于中间结果计算风速预报偏弱率</code></pre>
<pre><code>array([0.2, 0.4])</code></pre>
<h1>风预报综合准确率</h1>
<p><strong><font face="黑体" color=blue size = 5>acz(d_ob,d_fo,s_ob,s_fo)</font></strong><br />
基于原始风向数组,计算风预报综合准确率,计算的第一步是将预报和观测的风向都转换成8个离散的方位角,将观测和预报的风速转换成等级,观测预报的风向方位角一致且风速等级一致则记为正确,否则记为错误,风预报综合准确率= 正确样本数/总样本</p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>d_ob</font></strong></td>
<td style="text-align: left;">观测的风向,numpy数组</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>d_fo</font></strong></td>
<td style="text-align: left;">预报的风向,numpy数组,numpy可以比d_ob高一维(用于同时进行多家预报结果检验),d_fo.shape低维与d_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>s_ob</font></strong></td>
<td style="text-align: left;">观测的风速,numpy数组,shape和d_ob完全一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>s_fo</font></strong></td>
<td style="text-align: left;">预报的风速,numpy数组,numpy可以比d_ob高一维(用于同时进行多家预报结果检验),s_fo.shape低维与s_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">风预报综合准确率,如果d_fo和d_ob的shape一致,说明只有一家预报,则返回实数,否则说明是在同时检验多家预报,返回结果为一维数组</td>
</tr>
</tbody>
</table>
<h1>风预报综合准确率_uv</h1>
<p><strong><font face="黑体" color=blue size = 5>acz_uv(u_ob,u_fo,v_ob,v_fo)</font></strong><br />
根据输入的观测和预报u,v分量(m/s),计算风预报综合准确率,计算的第一步是将预报和观测的风向都转换成8个离散的方位角,将观测和预报的风速转换成等级,观测预报的风向方位角一致且风速等级一致则记为正确,否则记为错误,风预报综合准确率= 正确样本数/总样本数</p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>u_ob</font></strong></td>
<td style="text-align: left;">观测的u分量,numpy数组</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>u_fo</font></strong></td>
<td style="text-align: left;">预报的u分量,numpy数组,shape和u_ob完全一致或比u_ob高一维(用于同时进行多家预报结果检验),u_fo.shape低维与u_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>v_ob</font></strong></td>
<td style="text-align: left;">观测的v分量,numpy数组,shape 和u_ob完全一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>v_fo</font></strong></td>
<td style="text-align: left;">预报的v分量,numpy数组,shape和u_ob完全一致或比u_ob高一维(用于同时进行多家预报结果检验),v_fo.shape低维与v_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">风预报综合准确率,如果d_fo和d_ob的shape一致,说明只有一家预报,则返回实数,否则说明是在同时检验多家预报,返回结果为一维数组</td>
</tr>
</tbody>
</table>
<h1>风综合准确率_基于中间结果</h1>
<p><strong><font face="黑体" color=blue size = 5>acz_na(na_array)</font></strong><br />
基于中间结果,计算风综合准确率</p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>acz_na</font></strong></td>
<td style="text-align: left;">包含检验中间结果的多维数组,其中最后一维长度为2,分别记录了样本数数,正确数,它通常是na_ds或na_uv函数的计算结果,或者计算结果的累加</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">风综合准确率,整数或数组,它比na_array少了最后一维</td>
</tr>
</tbody>
</table>
<p><strong>调用示例:</strong> </p>
<pre><code class="language-python">mem.acz(d_ob,d_fo,s_ob,s_fo) #基于风向、风速数据计算风速预报综合准确率</code></pre>
<pre><code>array([0., 0.])</code></pre>
<pre><code class="language-python">mem.acz_uv(u_ob,u_fo,v_ob,v_fo) #基于u,v数据计算风速预报综合准确率</code></pre>
<pre><code>array([0., 0.])</code></pre>
<pre><code class="language-python">mem.acz_na(na_array) #基于中间结果计算风速预报综合准确率</code></pre>
<pre><code>array([0., 0.])</code></pre>
<h1>风向预报误差</h1>
<p><strong><font face="黑体" color=blue size = 5>me_angle(d_ob,d_fo,s_ob = None,s_fo = None, ignore_breeze = False)</font></strong><br />
基于原始风向数组,计算风向预报平均误差,计算的第一步是将预报和观测的风向角度数值差error,当error大于180时,将误差重置为360-error,当error小于-180时,将误差重置为360+error,再对所有样本求平均</p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>d_ob</font></strong></td>
<td style="text-align: left;">观测的风向,numpy数组</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>d_fo</font></strong></td>
<td style="text-align: left;">预报的风向,numpy数组,numpy可以比d_ob高一维(用于同时进行多家预报结果检验),d_fo.shape低维与d_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>s_ob</strong></td>
<td style="text-align: left;">观测的风速,numpy数组,shape和d_ob完全一致,在ignore_breeze = True时使用</td>
</tr>
<tr>
<td style="text-align: left;"><strong>s_fo</strong></td>
<td style="text-align: left;">预报的风速,numpy数组,numpy可以比d_ob高一维(用于同时进行多家预报结果检验),s_fo.shape低维与s_ob.shape保持一致,在ignore_breeze = True时使用</td>
</tr>
<tr>
<td style="text-align: left;"><strong>ignore_breeze</strong></td>
<td style="text-align: left;">该参数为True时,若预报和观测的风速都小于等于3级,则认为风向是正确的。</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">风向预报平均误差,如果d_fo和d_ob的shape一致,说明只有一家预报,则返回实数,否则说明是在同时检验多家预报,返回结果为一维数组</td>
</tr>
</tbody>
</table>
<h1>风向预报误差_uv</h1>
<p><strong><font face="黑体" color=blue size = 5>me_angle_uv(u_ob,u_fo,v_ob,v_fo, ignore_breeze = False)</font></strong><br />
基于u,v风分量,计算风向预报评分。计算的第一步是将预报和观测的风向角度数值差error,当error大于180时,将误差重置为360-error,当error小于-180时,将误差重置为360+error,再对所有样本求平均</p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>u_ob</font></strong></td>
<td style="text-align: left;">观测的u分量,numpy数组</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>u_fo</font></strong></td>
<td style="text-align: left;">预报的u分量,numpy数组,shape和u_ob完全一致或比u_ob高一维(用于同时进行多家预报结果检验),u_fo.shape低维与u_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>v_ob</font></strong></td>
<td style="text-align: left;">观测的v分量,numpy数组,shape 和u_ob完全一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>v_fo</font></strong></td>
<td style="text-align: left;">预报的v分量,numpy数组,shape和u_ob完全一致或比u_ob高一维(用于同时进行多家预报结果检验),v_fo.shape低维与v_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>ignore_breeze</strong></td>
<td style="text-align: left;">该参数为True时,若预报和观测的风速都小于等于3级,则认为风向是正确的。</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">风向预报平均误差,如果d_fo和d_ob的shape一致,说明只有一家预报,则返回实数,否则说明是在同时检验多家预报,返回结果为一维数组</td>
</tr>
</tbody>
</table>
<p><strong>调用示例:</strong> </p>
<pre><code class="language-python">mem.me_angle(d_ob,d_fo,s_ob,s_fo) #基于风向、风速数据计算风向的平均误差</code></pre>
<pre><code>array([-19.29007248, -46.55741436])</code></pre>
<pre><code class="language-python">mem.me_angle_uv(u_ob,u_fo,v_ob,v_fo) #基于u,v数据计算风向的平均误差</code></pre>
<pre><code>array([-19.28029323, -46.60681359])</code></pre>
<h1>风向预报绝对误差</h1>
<p><strong><font face="黑体" color=blue size = 5>mae_angle(d_ob,d_fo,s_ob = None,s_fo = None, ignore_breeze = False)</font></strong><br />
基于原始风向数组,计算风向预报平均绝对误差,计算的第一步是将预报和观测的风向角度数值差error,当error大于180时,将误差重置为360-error,当error小于-180时,将误差重置为360+error,再对所有样本误差绝对值求平均</p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>d_ob</font></strong></td>
<td style="text-align: left;">观测的风向,numpy数组</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>d_fo</font></strong></td>
<td style="text-align: left;">预报的风向,numpy数组,numpy可以比d_ob高一维(用于同时进行多家预报结果检验),d_fo.shape低维与d_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>s_ob</strong></td>
<td style="text-align: left;">观测的风速,numpy数组,shape和d_ob完全一致,在ignore_breeze = True时使用</td>
</tr>
<tr>
<td style="text-align: left;"><strong>s_fo</strong></td>
<td style="text-align: left;">预报的风速,numpy数组,numpy可以比d_ob高一维(用于同时进行多家预报结果检验),s_fo.shape低维与s_ob.shape保持一致,在ignore_breeze = True时使用</td>
</tr>
<tr>
<td style="text-align: left;"><strong>ignore_breeze</strong></td>
<td style="text-align: left;">该参数为True时,若预报和观测的风速都小于等于3级,则认为风向是正确的。</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">风向预报平均绝对误差,如果d_fo和d_ob的shape一致,说明只有一家预报,则返回实数,否则说明是在同时检验多家预报,返回结果为一维数组</td>
</tr>
</tbody>
</table>
<h1>风向预报绝对误差_uv</h1>
<p><strong><font face="黑体" color=blue size = 5>mae_angle_uv(u_ob,u_fo,v_ob,v_fo, ignore_breeze = False)</font></strong><br />
基于u,v风分量,计算风向预报平均绝对误差。计算的第一步是将预报和观测的风向角度数值差error,当error大于180时,将误差重置为360-error,当error小于-180时,将误差重置为360+error,再对所有样本误差绝对值求平均</p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>u_ob</font></strong></td>
<td style="text-align: left;">观测的u分量,numpy数组</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>u_fo</font></strong></td>
<td style="text-align: left;">预报的u分量,numpy数组,shape和u_ob完全一致或比u_ob高一维(用于同时进行多家预报结果检验),u_fo.shape低维与u_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>v_ob</font></strong></td>
<td style="text-align: left;">观测的v分量,numpy数组,shape 和u_ob完全一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>v_fo</font></strong></td>
<td style="text-align: left;">预报的v分量,numpy数组,shape和u_ob完全一致或比u_ob高一维(用于同时进行多家预报结果检验),v_fo.shape低维与v_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>ignore_breeze</strong></td>
<td style="text-align: left;">该参数为True时,若预报和观测的风速都小于等于3级,则认为风向是正确的。</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">风向预报平均绝对误差,如果d_fo和d_ob的shape一致,说明只有一家预报,则返回实数,否则说明是在同时检验多家预报,返回结果为一维数组</td>
</tr>
</tbody>
</table>
<p><strong>调用示例:</strong> </p>
<pre><code class="language-python">mem.mae_angle(d_ob,d_fo,s_ob,s_fo) #基于风向、风速数据计算风向的平均绝对误差</code></pre>
<pre><code>array([84.42073651, 72.41340034])</code></pre>
<pre><code class="language-python">mem.mae_angle_uv(u_ob,u_fo,v_ob,v_fo) #基于u,v数据计算风向的平均绝对误差</code></pre>
<pre><code>array([84.45094066, 72.44969169])</code></pre>
<h1>风向预报均方根误差</h1>
<p><strong><font face="黑体" color=blue size = 5>rmse_angle(d_ob,d_fo,s_ob = None,s_fo = None, ignore_breeze = False)</font></strong><br />
基于原始风向数组,计算风向预报均方根误差,计算的第一步是将预报和观测的风向角度数值差error,当error大于180时,将误差重置为360-error,当error小于-180时,将误差重置为360+error,再对所有样本的均方根误差</p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>d_ob</font></strong></td>
<td style="text-align: left;">观测的风向,numpy数组</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>d_fo</font></strong></td>
<td style="text-align: left;">预报的风向,numpy数组,numpy可以比d_ob高一维(用于同时进行多家预报结果检验),d_fo.shape低维与d_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>s_ob</strong></td>
<td style="text-align: left;">观测的风速,numpy数组,shape和d_ob完全一致,在ignore_breeze = True时使用</td>
</tr>
<tr>
<td style="text-align: left;"><strong>s_fo</strong></td>
<td style="text-align: left;">预报的风速,numpy数组,numpy可以比d_ob高一维(用于同时进行多家预报结果检验),s_fo.shape低维与s_ob.shape保持一致,在ignore_breeze = True时使用</td>
</tr>
<tr>
<td style="text-align: left;"><strong>ignore_breeze</strong></td>
<td style="text-align: left;">该参数为True时,若预报和观测的风速都小于等于3级,则认为风向是正确的。</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">风向预报均方根误差,如果d_fo和d_ob的shape一致,说明只有一家预报,则返回实数,否则说明是在同时检验多家预报,返回结果为一维数组</td>
</tr>
</tbody>
</table>
<h1>风向预报均方根误差_uv</h1>
<p><strong><font face="黑体" color=blue size = 5>mae_angle_uv(u_ob,u_fo,v_ob,v_fo, ignore_breeze = False)</font></strong><br />
基于u,v风分量,计算风向预报均方根误差。计算的第一步是将预报和观测的风向角度数值差error,当error大于180时,将误差重置为360-error,当error小于-180时,将误差重置为360+error,再对所有样本的均方根误差</p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>u_ob</font></strong></td>
<td style="text-align: left;">观测的u分量,numpy数组</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>u_fo</font></strong></td>
<td style="text-align: left;">预报的u分量,numpy数组,shape和u_ob完全一致或比u_ob高一维(用于同时进行多家预报结果检验),u_fo.shape低维与u_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>v_ob</font></strong></td>
<td style="text-align: left;">观测的v分量,numpy数组,shape 和u_ob完全一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>v_fo</font></strong></td>
<td style="text-align: left;">预报的v分量,numpy数组,shape和u_ob完全一致或比u_ob高一维(用于同时进行多家预报结果检验),v_fo.shape低维与v_ob.shape保持一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>ignore_breeze</strong></td>
<td style="text-align: left;">该参数为True时,若预报和观测的风速都小于等于3级,则认为风向是正确的。</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">风向预报均方根误差,如果d_fo和d_ob的shape一致,说明只有一家预报,则返回实数,否则说明是在同时检验多家预报,返回结果为一维数组</td>
</tr>
</tbody>
</table>
<p><strong>调用示例:</strong> </p>
<pre><code class="language-python">mem.rmse_angle(d_ob,d_fo,s_ob,s_fo) #基于风向、风速数据计算风向预报的均方根误差</code></pre>
<pre><code>array([99.45177639, 88.44261801])</code></pre>
<pre><code class="language-python">mem.rmse_angle_uv(u_ob,u_fo,v_ob,v_fo) #基于u,v数据计算风向预报的均方根误差</code></pre>
<pre><code>array([99.48769569, 88.50191893])</code></pre>
<pre><code class="language-python"></code></pre>