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

如何计算多组同长度数组对应元素的最大值、最小值与平均值?

计算多数组对应位置的最值与平均值的实现方法

我有以下三组数组:

x = [0.01067573, 0.0139049, 0.01713406, 0.01902214, 0.02228745, 0.0243896,
     0.02575684, 0.0281498, 0.0303585, 0.03053122, 0.0282564, 0.03066194,
     0.0318088, 0.03290647, 0.03438853, 0.03613471, 0.0383046, 0.0365982,
     0.0348341, 0.0289057, 0.0122935, 0.01067573, 0.01067573, 0.01067573,
     0.01067573, 0.01067573, 0.01067573, 0.01067573, 0.01067573, 0.01067212,
     0.01046571]
y = [0.01067573, 0.0139049, 0.01713406, 0.01994051, 0.02141184, 0.0238336,
     0.02698133, 0.0296072, 0.0320376, 0.0291436, 0.0262487, 0.0279379,
     0.0294417, 0.0308968, 0.0323344, 0.0337727, 0.0336187, 0.0357771,
     0.0340007, 0.0282703, 0.0123555, 0.01095551, 0.01067573, 0.01083439,
     0.01067573, 0.01067573, 0.01075694, 0.01095551, 0.01067573, 0.01076594,
     0.01098551]
z = [0.01067573, 0.0139049, 0.01713406, 0.0188497, 0.0213636, 0.0248497,
     0.0252536, 0.0274743, 0.0295116, 0.0274806, 0.0273424, 0.02900906,
     0.03005469, 0.0308758, 0.03167363, 0.03314961, 0.03595196, 0.0375954,
     0.03869676, 0.02937896, 0.012627, 0.01067573, 0.01067573, 0.01098724,
     0.01154837, 0.01080896, 0.01085163, 0.01139469, 0.01067573, 0.01076688,
     0.01068204]

需要计算这三组数组对应位置元素的最大值、最小值和平均值,得到三个与原数组长度一致的结果数组。比如最大值数组示例如下:

max_array = [0.01067573, 0.0139049, 0.01713406, 0.01994765, 0.02185929, 0.02423337,
             0.02760071, 0.0296107, 0.0316786, 0.0289268, 0.0285128, 0.03066194,
             0.0313552, 0.03287471, 0.03449902, 0.03616078, 0.0368397, 0.0406049,
             0.035475, 0.03232031, 0.0124145, 0.01067573, 0.01067573, 0.01100561,
             0.01067573, 0.01067573, 0.01085745, 0.01067573, 0.01067573, 0.01071802,
             0.01072735]

请问有可行的实现方法吗?


实现方案

方法一:使用NumPy(推荐)

NumPy针对数组操作做了优化,处理这类逐元素计算效率极高,代码也更简洁:

import numpy as np

# 将原生列表转换为NumPy数组
x_np = np.array(x)
y_np = np.array(y)
z_np = np.array(z)

# 计算对应位置的最大值
max_result = np.stack([x_np, y_np, z_np], axis=0).max(axis=0)
# 等价写法:max_result = np.maximum(np.maximum(x_np, y_np), z_np)

# 计算对应位置的最小值
min_result = np.stack([x_np, y_np, z_np], axis=0).min(axis=0)

# 计算对应位置的平均值
mean_result = np.stack([x_np, y_np, z_np], axis=0).mean(axis=0)

# 若需要转回原生列表格式
max_result_list = max_result.tolist()
min_result_list = min_result.tolist()
mean_result_list = mean_result.tolist()

方法二:原生Python实现(无依赖)

如果不想引入第三方库,直接用原生Python的zip函数打包对应位置元素,再逐个计算:

# 最大值数组
max_result = [max(a, b, c) for a, b, c in zip(x, y, z)]

# 最小值数组
min_result = [min(a, b, c) for a, b, c in zip(x, y, z)]

# 平均值数组
mean_result = [(a + b + c) / 3 for a, b, c in zip(x, y, z)]

这种方法适合小规模数组,当数组长度较大时,NumPy的性能优势会非常明显。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 13:57:18