Python - 使用np.average替换某个x范围内的y值

时间:2016-06-30 21:50:17

标签: python

我想要替换一些情节的几个区域。我想指定一个x范围,计算该范围内y值的平均值,并在几个x范围内重复此过程。在那一刻,我只能弄清楚如何用每个y值的平均值替换每个范围中的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值。

2 个答案:

答案 0 :(得分: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)])

答案 1 :(得分: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])