1

一連のデータの移動平均を計算する関数を作成しようとしています。これは機能です:

def averaged_rel_track(navg, rel_values, nb, zeroindex):
    #function to average the relative track values for each blade. This is 
    #dependant on the number values specified by the user to average over in a 
    #rolling average
    for blade in range(0,int(nb)):
        av_values=[]
        rel_blade=rel_values[:,blade]
        for rev in range(0,len(rel_blade)):          
            section=rel_blade[rev-int(navg)+1:rev]
            av_value=np.mean(section)
            av_values.append(av_value)

        print av_values

ただし、チェックを追加したいので、これを実装する最良の方法に苦労しています...navg移動平均の平均数 ( ) が 24 の場合、指定された要素と要素。ただし、これらの 24 個の値のいずれかがゼロの場合、その指定された要素の平均をゼロにしたいと考えています。私は試した:

def averaged_rel_track(navg, rel_values, nb, zeroindex):
    #function to average the relative track values for each blade. This is 
    #dependant on the number values specified by the user to average over in a 
    #rolling average
    for blade in range(0,int(nb)):
        av_values=[]
        rel_blade=rel_values[:,blade]
        for rev in range(0,len(rel_blade)):          
            section=rel_blade[rev-int(navg)+1:rev]
            av_value=np.mean(section)
            zero_test= np.where(np.any(section==0))
            print zero_test
            if len(zero_test)==0:
                av_value=None
            av_values.append(av_value)
        print av_values

しかし、zero_test の長さは常に 1 ですか?

この方法または別の方法を完全に修正する方法を考えられる人はいますか?

乾杯

4

1 に答える 1

0

@Mr Eのコメントに続いてzero_test、単純に置き換えることでこれを解決しましたnp.any(section==0)。これは、はるかに簡単な方法です。

于 2013-09-06T13:15:13.823 に答える