0

使用 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'ish 的计算切片以馈入 mean() 和 std() 的方法,它不占用这么多行?(我知道我可以用 numpy.where() 来做到这一点,但条件会占用几乎一样多的行)

谢谢!

4

2 回答 2

1

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

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

于 2019-11-10T09:26:55.587 回答
0

你可以使用这 2 个教程: numpy-meannumpy-std

于 2019-11-10T09:06:36.833 回答