用它们的平均值替换数组元素

问题描述

假设我有一个 numpy 数组:

a = [0,1,…,i-1,i,i+1,j,j+1,n]

我想用一个元素替换第 i 个、第 i+1 个……第 j 个元素——它们的平均值:

b = [0,average,n]

我将如何使用尽可能紧凑的代码来做到这一点?

解决方法

切片和连接数组

   np.concatenate([a[:i],a[i:j].mean().reshape(1,),a[j:]])

示例

a = np.array(list(range(20)))
i = 5
j = 10

np.concatenate([a[:i],a[j:]])

array([ 0.,1.,2.,3.,4.,7.,10.,11.,12.,13.,14.,15.,16.,17.,18.,19.])