在python numpy scipy中平均减去补丁

时间:2011-08-05 22:02:46

标签: python numpy scipy

我有一个3维的numpy数组,它是一个8x8图像的补丁网格。

从每个补丁中减去它的平均值的最佳方法是什么,换句话说,每个补丁都有一个独特的均值,我想减去它。我尝试了以下但没有成功,因为两个数组的形状不相同

patches=- patches.mean(axis = 2).mean(axis = 1)

我想过使用重复功能,比如:

patches=- np.repeat(np.repeat(patches.mean(axis =2).mean(axis =1).reshape((n_patches, 8, 8)), 1, 1))

我认为遵循这条路线会导致效率低下的解决方案。有什么想法或解决方案吗?

2 个答案:

答案 0 :(得分:3)

import numpy as np
a = np.random.rand(10,8,8)
mean = a.mean(axis=2).mean(axis=1)
b = a - mean[:, np.newaxis, np.newaxis] # reshape the mean as (10, 1, 1)

答案 1 :(得分:1)