如何测量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
数组,然后对该变量调用 mean
和 std
方法。
此外,如果您想知道,您在那里完成的切片非常有效,numpy 不应该创建新数组,而只是对现有内存进行新视图。使用 where
之类的东西会创建一个新数组。
对使用 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
数组,然后对该变量调用 mean
和 std
方法。
此外,如果您想知道,您在那里完成的切片非常有效,numpy 不应该创建新数组,而只是对现有内存进行新视图。使用 where
之类的东西会创建一个新数组。