2016-06-30 96 views
0

我有幾個要替換的圖的區域。我想指定一個x範圍,計算該範圍內的y值的平均值,並重復這個過程多幾個x範圍。在那一刻,我只能弄清楚如何用所有y值的平均值代替每個範圍內的y值。Python - 使用np.average替換某個x範圍內的y值

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

編輯:數據是通過以下方式輸入:

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值替換爲xend,並將該範圍內的平均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])