在Python中按区间求和

1 投票
1 回答
2020 浏览
提问于 2025-04-16 15:41

我有一个形状为这样的numpy数组:

In: imar.shape 
Out: (21, 77, 10000)

我想在最后一个轴上进行分组求和,每组包含20个项目。

我现在的做法是:

np.sum(  imar.reshape([-1,500,20]), axis=2 ).reshape(imar.shape[:2])

这个方法很快,但如果我在调整形状时出错,可能会出问题。有没有更好的方法呢?

我看过np.digitize、histogram、bincount等一些方法,但那些都是基于值的;我想在一组范围内进行求和。

1 个回答

1

你的方法是对的。我之前也问过一个类似的问题:

如何像Matlab的blkproc函数那样高效地处理numpy数组的块

处理数组形状变化的方法有好几种。如果你小心点,写个函数来处理这个问题,就没问题。当然,你需要确保在输入的矩阵不是块大小的整数倍时,要对它进行修剪。

撰写回答