2016-06-30 5 views
0

私は、置き換えたいプロットのいくつかの領域を持っています。私はx範囲を指定し、その範囲内のy値の平均を計算し、このプロセスをいくつかのx範囲に対して繰り返す。分ごとに、各範囲のy値をすべてのy値の平均値で置き換える方法しか分かりません。Python - 特定のx範囲内のy値をnp.averageで置換する

for n, i in enumerate(x): 
    for a, b in zip(xstart, xend): 
     if (a <= i <= b): 
      y[n] = np.average(y) 

EDIT:データは次のように入力されている:両方すなわち

data = np.loadtxt('data.dat') 
x = data[:,0] 
y = data[:,1] 

mask = np.loadtxt('mask.dat') 
xstart = mask[:,0] 
xend = mask[:,1] 

は、2列のテキストファイルです。望ましい出力は、xstart内の各y値をその範囲内の平均y値で置き換えることです。

+3

サンプル入力と希望する出力データセット/アレイ/リストを投稿できますか? – MaxU

答えて

1

xの「範囲」がx0x1の場合はどうなりますか?

X = np.linspace(0, 10, 100) 
Y = X**2 

x0 = 2 
x1 = 7 

Y[(x0 < X) & (X < x1)] = np.average(Y[(x0 < X) & (X < x1)]) 
0

numpy配列でスライスを使用することができます(単純配列と同じように)。

#no need to loop over X 
for a, b in zip(xstart, xend): 
    #just replace all values in array with indexes from a to b. 
    y[a:b] = np.average(y[a:b]) 
関連する問題