python - 跨多个轴计算平均值
问题描述
认为
inp = np.random.randint(1,500,size=(1, 2, 5, 5))
输出是:
array([[[[ 58, 223, 150, 287, 56],
[ 59, 19, 436, 441, 299],
[194, 79, 133, 19, 113],
[242, 497, 494, 54, 6],
[ 57, 382, 123, 114, 40]],
[[170, 482, 464, 78, 429],
[ 97, 445, 129, 319, 181],
[370, 413, 304, 177, 215],
[ 4, 279, 366, 66, 65],
[260, 375, 492, 282, 277]]]])
现在如果我这样做
np.sum(inp,axis=(2,3))
我明白了
array([[4575, 6739]])
我知道列和行分别是轴 0 和轴 1,但我看到很多地方轴作为元组传递。我不知道在这种情况下如何计算输出尺寸以及它沿着哪些轴或轴组合发生。我可以对此有所了解吗?
解决方案
我通常建议生成一个用于测试的模式,而不是尝试使用一系列随机整数来弄清楚发生了什么。
shp = (1, 2, 3, 4)
a = np.arange(np.prod(shp)).reshape(shp)
a
Out[3]:
array([[[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]]])
np.mean(a, axis=(0,1))
Out[4]:
array([[ 6., 7., 8., 9.],
[10., 11., 12., 13.],
[14., 15., 16., 17.]])
np.mean(a, axis=(1,2))
Out[5]: array([[10., 11., 12., 13.]])
np.mean(a, axis=(2,3))
Out[6]: array([[ 5.5, 17.5]])
从那里您可以删除可能会混淆您所期望的轴并重新检查
a = a.squeeze()
np.mean(a, axis=(0,1))
Out[8]: array([10., 11., 12., 13.])
np.mean(a, axis=(1,2))
Out[9]: array([ 5.5, 17.5])
推荐阅读
- django - Django在注释中将timedelta转换为整数
- ionic3 - 任务“:app:processDebugGoogleServices”执行失败。在android构建期间
- botframework - Microsoft Teams 机器人在模拟器和本地主机上工作,但不是团队应用程序
- firebase - 反应原生谷歌登录 - firebase 无效令牌
- vba - Powerpoint - VBA - 将选定的文本放入方括号
- r - R to SAP Hana,变量名问题
- google-sheets - 如何在公式中使用工作表名称
- reactjs - 如何根据列值向行添加背景颜色?
- doctrine - 教义,如何在您刚刚在本地进行的两次迁移中进行一次迁移?
- c++ - 为英特尔 AVX[SIMD] 优化 128x128 到 256 位乘法