私は、一連の観測された星からmodel PSFを生成しようとしています。オフ中心の重み付き数値ヒストグラム2d?
センター(ピーク強度)はビンである:私はthis answer(以下MCVE)にali_mが提供する素晴らしい例このような
5つ星私が使用しているを見て、次のよ[9, 9]
。ビン[8, 8]
のピーク密度を示す
:numpy
のhitsogram2dを経由してその組み合わせの結果がこれです。代わりに
cx, cy = np.array([1.] * len(stars)), np.array([1.] * len(stars))
:[9, 9]
でそれを中央に、私は重心を(下記参照)を取得する必要があります。どうしてこれなの?
import numpy as np
from matplotlib import pyplot as plt
stars = # Uploaded here: http://pastebin.com/tjLqM9gQ
fig, ax = plt.subplots(2, 3, figsize=(5, 5))
for i in range(5):
ax.flat[i].imshow(
stars[i], cmap=plt.cm.viridis, interpolation='nearest',
origin='lower', vmin=0.)
ax.flat[i].axhline(9., ls='--', lw=2, c='w')
ax.flat[i].axvline(9., ls='--', lw=2, c='w')
fig.tight_layout()
# (nstars, ny, nx) pixel coordinates relative to each centroid
# pixel coordinates (integer)
x, y = np.mgrid[:20, :20]
# centroids (float)
cx, cy = np.array([0.] * len(stars)), np.array([0.] * len(stars))
dx = cx[:, None, None] + x[None, ...]
dy = cy[:, None, None] + y[None, ...]
# 2D weighted histogram
bins = np.linspace(0., 20., 20)
h, xe, ye = np.histogram2d(dx.ravel(), dy.ravel(), bins=bins,
weights=stars.ravel())
fig, ax = plt.subplots(1, 1, subplot_kw={'aspect': 'equal'})
ax.hold(True)
ax.imshow(h, cmap=plt.cm.viridis, interpolation='nearest',
origin='lower', vmin=0.)
ax.axhline(8., ls='--', lw=2, c='w')
ax.axvline(8., ls='--', lw=2, c='w')
plt.show()
正確に何が問題なのかは少し不明です。もしあなたが問題の銀河構成要素を省き、あなたが期待するものを正確に述べ、それがあなたが得たものとどのように比較してより小さな例を作り出すかは、おそらく助けになるだろうか? – ImportanceOfBeingErnest
これは本当に簡単です: 'np.histogram2d'は、生成する配列と同じように、ビン[9,9]に中心が置かれていると思います。なぜ[8、8]に中心があるのか分からない。申し訳ありませんが、例を短くすることはできません。 – Gabriel