You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NumPy数组每两个相邻元素间插入二者的平均值

实现方案

核心逻辑:输入数组长度为n时,输出数组长度为2n - 1,偶数索引位保留原元素,奇数索引位存放相邻两个原元素的平均值。

方法1:索引赋值法(性能最优)

直接创建目标长度的空数组,分别给奇偶索引位赋值,无多余内存操作,适合处理大数组:

import numpy as np

x = np.array([1, 3, 5, 7, 9])
res_len = 2 * len(x) - 1
result = np.empty(res_len, dtype=x.dtype)
# 偶数位赋值原数组元素
result[::2] = x
# 奇数位赋值相邻元素平均值
result[1::2] = (x[:-1] + x[1:]) / 2

print(result)
# 输出:[1 2 3 4 5 6 7 8 9]

方法2:线性插值法(扩展性最强)

调用NumPy内置的插值函数实现,调整插值密度时只需修改linspace的参数即可:

import numpy as np

x = np.array([1, 3, 5, 7, 9])
n = len(x)
old_idx = np.arange(n)
# 生成间隔为0.5的新索引坐标
new_idx = np.linspace(0, n-1, 2*n -1)
result = np.interp(new_idx, old_idx, x)

# 如果需要整数类型输出可以加类型转换
# result = result.astype(int)
print(result)
# 输出:[1. 2. 3. 4. 5. 6. 7. 8. 9.]

方法3:堆叠展平法(代码最短)

通过数组堆叠+展平实现,代码更精简:

import numpy as np

x = np.array([1, 3, 5, 7, 9])
result = np.column_stack([x[:-1], (x[:-1] + x[1:])/2]).ravel()
result = np.append(result, x[-1])

print(result)
# 输出:[1. 2. 3. 4. 5. 6. 7. 8. 9.]

内容的提问来源于stack exchange,提问作者Adam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:42:01