Python中的中位数合并拟合图像

10

我有三个二维的numpy数组,表示为fits图像。我想将它们进行中位数合并,也就是生成一个输出数组,在这个数组中,每个像素是三个输入数组中同一像素的中位数。在IRAF上使用imcombine可以轻松实现此操作。那么有没有一种方法可以在Python中做到这一点,而不必循环整个数组并取每个像素的中位数?

1个回答

14

最简单的方法是:

  • 将2D数组堆叠以形成3D数组
  • 使用numpy.median计算中位数,传递axis=0以沿着堆叠的维度进行计算。

您实际上是在计算逐元素的中位数。这里是我会做的简单示例:

>>> import numpy
>>> a = numpy.array([[1,2,3],[4,5,6]])
>>> b = numpy.array([[3,4,5],[6,7,8]])
>>> c = numpy.array([[9,10,11],[12,1,2]])
>>> d = numpy.array([a,b,c])
>>> d
array([[[ 1,  2,  3],
        [ 4,  5,  6]],

       [[ 3,  4,  5],
        [ 6,  7,  8]],

       [[ 9, 10, 11],
        [12,  1,  2]]])
>>> d.shape
(3, 2, 3)

>>> numpy.median(d, axis=0)
array([[ 3.,  4.,  5.],
       [ 6.,  5.,  6.]])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接