python - 我有一个大小为(144、173、360)的 3D 数组。是否只取每 12 个指数的平均值?
问题描述
我有一个形状为 144,173, 360 的 3D 数组。我想取第一个轴的平均值(大小 144),但只取每 12 个元素的平均值,所以只取平均值:
0th, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11th index of first axis
然后取平均值:
12th, 13, 14, ... 23rd indices of the first axis, etc.
我通过使用:: 创建一个 for 循环以仅包含每 12 个索引来尝试此操作,但我是否在正确的范围内循环?输出数组的形状与原始数组相同......所以让我觉得我没有在正确的范围内循环?
array = np.random.rand(144,173,360)
# trying to take mean of every 12th index of first axis
array_mean_every_12th_index = []
for i in range(12):
array_mean_every_12th_index.append(np.mean(array[i::12],axis=0))
array_mean_every_12th_index = np.array(array_mean_every_12th_index)
我的 for 循环可能有什么问题?以及如何仅取第一个轴的每 12 个索引的平均值(轴 = 0,大小 144)?
解决方案
最简单的方法可能是重塑你的数组:
array_mean_every_12th_index = array.reshape(-1, 12, *array.shape[1:]).mean(axis=1)
当您将这样的轴重塑为两个轴时,它允许您对每 12 个元素 ( mean(axis=0)
) 或每批 12 ( mean(axis=1)
) 求和。你似乎想要后者。
推荐阅读
- python-3.x - 如何最好地编写 aws lambda python try/except
- node.js - 试图在我的 node.js / express.js 项目中设置 swagger ui
- reactjs - 两个页面都在一个页面上显示其内容 - React
- c++ - C++ 模板指向引用类型的tomfoolery
- postgresql - 在 postgres 函数中将表导出到 csv
- c - 为什么一次将值直接添加到 C 中的变量中,并且一次添加一个值会创建不同的值?
- spreadsheet - 计数是否匹配 2 个标准 Google 表格
- javascript - Firebase 实时数据库的分页
- amazon-web-services - 当 IP 在 AWS WAF 中被列入黑名单时,如何配置 SNS 以触发邮件?
- r - 如何在 Windows 10 上安装 Jupyter Lab/Notebook?