Биннинг в здоровых картах? - PullRequest
1 голос
/ 19 июня 2019

У меня есть здоровая карта, где каждое значение пикселя является некоторым значимым физическим измерением.Я хотел бы разбить карту на «квадраты» с длиной стороны, скажем, 5 градусов.В основном я хочу усреднить значения пикселей в каждом 5 градусах ^ 2 бина.Есть ли простой способ сделать это?

1 Ответ

0 голосов
/ 20 июня 2019

Вы можете использовать тот факт, что healpy поддерживает и кольцо, и вложенный порядок, чтобы достичь этого. На каждый шаг разрешения четыре пикселя с высоким разрешением составляют один пиксель с низким разрешением.

  import healpy as hp
  import numpy as np

  nside_high = 2
  npix_high = hp.nside2npix(nside_high)
  arr = np.arange(npix_high)

  hp.mollview(arr)

enter image description here

Теперь, используя вложенный порядок, мы можем вычислить среднее значение для каждого пикселя с низким разрешением. Это эквивалентно использованию hp.ud_grade(arr, nside_low).

  nside_low = 1
  order_diff = nside_high - nside_low

  arr_lowres = hp.reorder(arr, r2n=True).reshape((-1, 4**order_diff)).mean(axis=1)
  hp.mollview(arr_lowres, nest=True)

enter image description here

Наконец, мы можем заменить mean на std, чтобы получить стандартное отклонение:

  arr_std = hp.reorder(arr, r2n=True).reshape((-1, 4**order_diff)).std(axis=1)
  hp.mollview(arr_std, nest=True)

enter image description here

...