10

2D numpy 配列の形式で 3 つのフィット画像があります。つまり、各ピクセルが 3 つの入力配列内の同じピクセルの中央値である出力配列を生成します。これは、imcombine を使用して IRAF で簡単に実行できます。配列全体をループして各ピクセルの中央値を取得せずに Python でこれを行う方法はありますか?

4

1 に答える 1

14

これを行う最も簡単な方法は次のとおりです。

  • 2 次元配列を積み重ねて 3 次元配列を形成する
  • 積み重ねの次元に沿って計算するために、numpy.medianpassingを使用して中央値を計算します。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.]])
于 2012-12-06T22:08:07.120 に答える