2012-12-06 26 views
6

我有2D numpy數組形式的三個適合圖像。我想要將它們進行中值組合,即生成一個輸出數組,其中每個像素是三個輸入數組中相同像素的中值。這可以通過使用imcombine在IRAF上輕鬆完成。有沒有辦法做到這一點在Python上沒有循環遍歷整個數組,並採取每個像素的中位數?中位數組合適合python圖像

回答

9

做到這一點的最簡單的方法是:

  • 堆棧二維陣列,以形成一個三維陣列
  • 計算使用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.]]) 
+0

這是有效的。謝謝! – mcglashan