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

2024-04-20 00:56:02 发布

您现在位置:Python中文网/ 问答频道 /正文

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

[ 1, 2, 3, 4 ]

应该变成:

[ 1.5, 1.5, 3.5, 3.5 ]

如果元素数为奇数,则最后一个元素保持不变,或者被删除/忽略。有什么简单的方法吗?你知道吗

也许首先获取[ 1.5, 3.5 ],然后复制每个元素会更容易些-我不确定。你知道吗

最后,我想继续递归地(或者迭代地对每一对,然后每四对,然后每八对,然后每2^I)这样,分辨率变得越来越低,直到它只是一个大平均值。你知道吗


Tags: 数据方法元素分辨率平均值奇数
1条回答
网友
1楼 · 发布于 2024-04-20 00:56:02

你可以像这样重塑

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]

相关问题 更多 >