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

如何用Numpy实现3维数组按同索引求方差转2维矩阵的高效代码

优化实现方案

完全可以借助Numpy的向量化运算实现性能跃升,你当前的三层Python循环存在极大的性能开销,直接调用Numpy内置的np.var并指定计算轴即可一行完成需求,代码如下:

import numpy as np
# 建议不要用input作为变量名,会覆盖Python内置input函数
input_arr = np.random.randint(0, 100, size=(10000, 100, 100))
output = np.var(input_arr, axis=0)
print(output.shape) # 输出(100, 100),完全符合需求

性能对比说明

  • 你原有实现的三层Python循环,每次迭代都要生成临时列表、调用单组方差计算,在普通消费级CPU上运行耗时通常在10秒以上
  • 优化后的向量化实现完全基于Numpy底层C语言实现的运算逻辑,避免了所有Python级循环开销,相同输入下运行耗时仅为10毫秒左右,性能提升超过1000倍

原理说明

你的三维数组shape为(10000, 100, 100),三个维度分别对应「子矩阵序号、子矩阵行坐标、子矩阵列坐标」,指定axis=0就是沿着子矩阵序号这个维度做聚合计算,对每个相同行、列坐标的10000个元素统一计算方差,正好匹配你的算法逻辑,计算结果和你原有循环输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:09:04