2017-03-23 24 views
0

私はPythonにはかなり新しく、numpyを使用して複数のファイルに平均化したいと思っています。私はいくつかの同様の質問を見てきましたが、私はまだ私の目標のためにそれを使用するには、Pythonで十分に精通していません。numpyを使って複数のファイルに平均をつける

状況:

私は、各ステップで101 .datファイルを作成するループを持っています。これらのファイルは、このような類似したコンテンツが含まれています。

" #t 
-0.00219801  
0.0174122 
0.0220081 
0.0166335 
-0.02764 
-0.0343197 
0.0495079 
0.0355671 
0.0
-0.0785652 " 

.datファイルの名前私は、ループ内のステップの数であると、以下の構造を有する:i_00000からi_00100を。さて、私はnumpyの配列としてファイルを読み込み、平均ファイル数をi_00000からi+100_00000i_00001などと同じ)にして、それぞれ10個の値を持つ101 .datファイルを取得します。

この非常に新しい質問のため申し訳ありませんが、私は現時点でちょっと固執しています。

ありがとうございました!

答えて

0

だから私は、0_00000.datから100_00100.datの範囲の101の.datファイルで101ステップを持ち、各ステップの101個の.datファイルごとに各行の平均を計算したいとします指定されたステップのすべての.datファイルの各行の平均を含む10行の101の.datファイルが作成されます。

次のコードは、指定したステップのすべての.datファイルを1つの大きな数値配列に読み込み、各行の平均を計算し、その結果を名前 "average_i.dat"の.datファイルに保存します。 /usr/lib/python2.7/dist-packages/numpy/core/_methods.py:59:RuntimeWarning:空のスライスの平均

import numpy as np 
import glob 

## iterate over all 101 steps 
for i in range(101): 

    ## get list of .dat files for each step 
    files = glob.glob("%d_*.dat" % i) 

    ## read contents of all files into one numpy array 
    ## this generates a 100x10 array for 100 files with 10 lines each 
    x = np.array([np.genfromtxt(f) for f in files]) 

    ## calculate average of each row 
    m = np.mean(x, axis=0) 

    ## store averages into new .dat file 
    np.savetxt("average_%03d.dat" % i, m) 
+0

おかげで、私は、実行時エラーが発生します。 warnings.warn( "空のスライスの平均"、RuntimeWarning) /usr/lib/python2.7/dist-packages/numpy/core/_methods.py:70:RuntimeWarning:無効な値がdouble_scalarsで発生しました ret = ret .dtype.type(ret/rcount) –

+0

globが一致するファイルを見つけられないので、 "ファイル"は空のリストに過ぎません。グロブパターンが実際にファイル名と一致するかどうかを確認し、ファイルが別のパスにある場合はパスを調整してください。 – acidtobi

+0

私のファイル名は "vel_x_y.dat" xの範囲(100-199)で、yの範囲(00000-00100)です。 "glob"は単にすべての一致するファイルを見つけることができるのですか、またはファイル名を完成させるために2つの変数を使用する必要がありますか? あなたの時間ありがとう:) –

関連する問題