我想要替换一些情节的几个区域。我想指定一个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值。
答案 0 :(得分:1)
x“范围”受x0
和x1
限制的情况怎么样?
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])