Python 如何获取numpy数组中每对值的平均值?

Python 如何获取numpy数组中每对值的平均值?,python,numpy,scipy,Python,Numpy,Scipy,我想做的是通过找到每对不同元素的平均值并将值设置为该平均值来降低1D数据的“分辨率”。例如: [ 1, 2, 3, 4 ] 应成为: [ 1.5, 1.5, 3.5, 3.5 ] 如果元素数为奇数,则最后一个元素保持不变,或被删除/忽略。有没有一个简单的方法可以做到这一点 也许先获取[1.5,3.5]然后复制每个元素会更容易些——我不确定 最终,我希望以递归方式(或对每一对进行迭代,然后是每四对,然后是每八对,然后是每2^I),这样分辨率会越来越低,直到它只是一个大平均值。您可以像这样使用重

我想做的是通过找到每对不同元素的平均值并将值设置为该平均值来降低1D数据的“分辨率”。例如:

[ 1, 2, 3, 4 ]
应成为:

[ 1.5, 1.5, 3.5, 3.5 ]
如果元素数为奇数,则最后一个元素保持不变,或被删除/忽略。有没有一个简单的方法可以做到这一点

也许先获取
[1.5,3.5]
然后复制每个元素会更容易些——我不确定


最终,我希望以递归方式(或对每一对进行迭代,然后是每四对,然后是每八对,然后是每2^I),这样分辨率会越来越低,直到它只是一个大平均值。

您可以像这样使用重塑

a = np.arange(1,15)
# groups of four in this example
k = 4 
result = np.empty(a.shape)
# arrange the elements in as many full (4 item) rows as possible
rect = k * (len(a) // k)
resview = np.reshape(result[:rect], (-1, k))
# perform mean along rows without collapsing them
resview[...] = np.mean(np.reshape(a[:rect], (-1, k)), axis=-1, keepdims=True)
if len(a) > rect:
    # handle the last, incomplete (<4 items) row
    result[rect:] = a[rect:].mean()
print(result)
[  2.5   2.5   2.5   2.5   6.5   6.5   6.5   6.5  10.5  10.5  10.5  10.5  13.5  13.5]
a=np.arange(1,15)
#在本例中,四人一组
k=4
结果=np.空(a.形状)
#在尽可能多的完整(4项)行中排列元素
rect=k*(len(a)//k)
resview=np.重塑(结果[:rect],(-1,k))
#在不折叠行的情况下沿行执行平均值
resview[…]=np.平均值(np.重塑(a[:rect],(-1,k)),轴=-1,keepdims=True)
如果len(a)>rect:

#处理最后一个不完整的(您可以像

a = np.arange(1,15)
# groups of four in this example
k = 4 
result = np.empty(a.shape)
# arrange the elements in as many full (4 item) rows as possible
rect = k * (len(a) // k)
resview = np.reshape(result[:rect], (-1, k))
# perform mean along rows without collapsing them
resview[...] = np.mean(np.reshape(a[:rect], (-1, k)), axis=-1, keepdims=True)
if len(a) > rect:
    # handle the last, incomplete (<4 items) row
    result[rect:] = a[rect:].mean()
print(result)
[  2.5   2.5   2.5   2.5   6.5   6.5   6.5   6.5  10.5  10.5  10.5  10.5  13.5  13.5]
a=np.arange(1,15)
#在本例中,四人一组
k=4
结果=np.空(a.形状)
#在尽可能多的完整(4项)行中排列元素
rect=k*(len(a)//k)
resview=np.重塑(结果[:rect],(-1,k))
#在不折叠行的情况下沿行执行平均值
resview[…]=np.平均值(np.重塑(a[:rect],(-1,k)),轴=-1,keepdims=True)
如果len(a)>rect:

#处理最后一个不完整的问题(这个过程只会给出平均IIUC.Correct,但我想用中间数据执行其他计算并绘制其他内容。您可以执行:
np.repeat((a[1::2]+a[::2])/2.0,2)
对于偶数个元素。这个过程最终只会给出平均IIUC。正确,但我想用中间数据执行其他计算并绘制其他东西。你可以做:
np.重复((a[1::2]+a[::2])/2.0,2)
对于偶数个元素。效果很好,谢谢!只需注意:当rect==len(a),(完全可被k整除)如果您试图查找空数组的平均值,则会收到警告,但这很容易被条件所抑制。@YousefAmar很好的捕获!修复了它。效果很好,谢谢!请注意:当rect==len(a)(完全可被k整除)试图查找空数组的平均值时会收到警告,但这很容易被条件语句抑制。@YousefAmar捕捉得很好!已修复。