有没有一种简单的方法可以通过在 Numpy 或 Scipy 中平均一定大小的块来减小3D矩阵的大小,甚至使用NetCDF工具或类似的工具?我不久前用stride写了一个2D矩阵,但一个现成的函数会有很大帮助。
编辑:
我希望输入和输出的外观示例:Input's shape: (500, 500, 100)
Calling the function: downsize(input, 10, 10, 10, func)
个Output's shape: (50, 50, 10)
,其中每个单元格的值是func
在连续的10x10x10子矩阵上的结果。
可替换地,代码可以获得期望的矩阵大小作为输入,而不是子矩阵的大小,并且计算出它们。
谢谢
3条答案
按热度按时间waxmsbnn1#
这里有一种方法,使用整形将每个轴分成两个,从而创建六个轴,然后对三个原始轴中的每个轴的第二个切片轴执行合并平均,以获得块平均-
样品运行-
tkqqtvp12#
对于记录,下面是一个适用于N维数组的函数,一般化为Divakar's answer
示例
mkshixfv3#
我最终把我的2维版本扩展到了3维,显然它很有效。在这里,以防别人也需要它。
我试着让它对任何N维矩阵都有效,但唯一的限制是
blocks = blocks[:, :, :, 0, 0, 0]
线。