我試圖從一組觀察到的恆星中生成model PSF。我繼ali_m在this answer(以下MCVE)提供的很好的例子偏心加權numpy histogram2d?
的5星我使用這個樣子的:
其中中心(峯值強度)是在垃圾箱[9, 9]
。經由numpy
的hitsogram2d其組合的結果是這樣的:
示出在倉[8, 8]
峯密度。在[9, 9]
居中,我一定要得到的重心(見下文)爲:
cx, cy = np.array([1.] * len(stars)), np.array([1.] * len(stars))
代替。爲什麼是這樣?
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