0

トリプルネストされたループを機能させようとしています。

私のコードは次のようなものです:

c = 4
y1 = []
m1 = []
std1 = []
while c < 24:
        c = c + 1
        a = []
        f.seek(0, 0)    
        for columns in ( raw.strip().split() for raw in f ):
                a.append(columns[c])    
                x = np.array(a, float)    
        not_nan = np.logical_not(np.isnan(x))    
        indices = np.arange(len(x))    
        interp = interp1d(indices[not_nan], x[not_nan], kind = 'nearest')    
        p = interp(indices)

        N = len(p)
        dt = 900.0 #Time step (seconds)
        fs = 1.0 / dt #Sampling frequency
        KA,PSD = oned_Fourierspectrum(p,dt) # Call Song's 1D FS function
        time_axis = np.linspace(0.0, N, num = N, endpoint = False) * 15 / (60 * 24)
        plot_freq = 24 * 3600.0 * KA #Convert to cycles per day
        plot_period = 1.0 / plot_freq # convert to days/cycle
        fpsd = plot_freq * PSD
        d = -1
        while d < 335:
                d = d + 1
                y = fpsd[d]
                y1 = y1 + [y]
                m = np.mean(y1)
        m1 = m1 + [m]
print m1

私の目的は のリストを作ることです[mean(fpsd[0]), mean(fpsd[1]), mean(fpsd[2]).. mean(fpsd[335])]。それぞれy1が のリストになりfpsd[d]ます。

私がチェックしました; 2 番目の while ループの前にかなりうまく機能しており、 の個々の平均を取得できますfpsd[d]。ただし、2番目のループ全体では、間違いなく間違った数値が生成されます。この問題を手伝ってくれませんか?

4

1 に答える 1

1

m1 を平均の累積リストにしたい場合は、最後の行をインデントして最後の while ブロック内に配置する必要があります。

while d <335:     
    d = d + 1     
    y = fpsd[d]     
    y1 = y1 + [y]       
    m = np.mean(y1)
    m1 = m1 + [m]
于 2013-03-01T09:01:59.700 に答える