如何测量numpy数组区域的均值

How to measure mean in region of numpy array

对使用 numpy 还很陌生,我有一段代码,其中有一个二维数组(图像),我想用该数组计算方形区域的均值和标准差。所以+/-特定点周围的行和列中的某个增量

现在我的代码看起来像这样(对于大约 (100, 100) 的 20 像素大小的任意区域):

r = 100
c = 100
r0 = r - 10
r1 = r + 10
c0 = c - 10
c1 = c + 10
mean = image[r0:r1, c0:c1].mean()
std = image[r0:r1, c0:c1].std()

问题

是否有更简洁或更 numpy'ish/python' 的方法来计算切片以馈入 mean() 和 std(),而不占用那么多行? (我知道我可以用 numpy.where() 来做到这一点,但是这样的条件几乎需要同样多的行)

谢谢!

您可以使用这两个教程: numpy-mean, numpy-std

据我所知,如果有的话,我会感到有点惊讶。你拥有的东西非常简单,所以它的特殊功能不会有太大帮助。我对可读性的建议是执行 +/- 内联以创建一个 region 数组,然后对该变量调用 meanstd 方法。

此外,如果您想知道,您在那里完成的切片非常有效,numpy 不应该创建新数组,而只是对现有内存进行新视图。使用 where 之类的东西会创建一个新数组。