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

如何将子数组元素替换为其平均值?求无需for循环的高效方法

无需for循环高效替换数组子元素为子数组均值

当然可以,利用NumPy的广播机制就能实现高效处理,全程不用写for循环:

实现步骤与代码

首先定义你的数组:

import numpy as np

a = np.array([[1, 2, 3], [2, 3, 4], [3, 4, 5]])
  1. 计算每个子数组(行)的平均值:
    使用mean(axis=1)按行计算均值,得到一维数组:

    row_means = a.mean(axis=1)
    # 输出:array([2., 3., 4.])
    
  2. 扩展均值数组的维度,使其能与原数组广播匹配:
    通过[:, np.newaxis]或reshape(-1, 1)将一维数组转为列向量:

    row_means = row_means[:, np.newaxis]
    # 输出:array([[2.], [3.], [4.]])
    
  3. 直接赋值替换原数组元素:
    NumPy的广播机制会自动将列向量扩展为与原数组相同的形状,完成替换:

    a[:] = row_means
    

最终得到的数组就是你想要的结果:

print(a)
# 输出:array([[2., 2., 2.], [3., 3., 3.], [4., 4., 4.]])

为什么高效?

NumPy的底层是用C实现的,这类向量化操作比Python层面的for循环快得多,尤其是处理大规模数组时优势更明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 16:03:10