Daher habe ich kürzlich einen einfachen Code geschrieben, um die Entfernung zwischen zwei Punkten zu analysieren, die in zwei separaten Excel-Dateien gespeichert sind. Jetzt, da ich diesen Code habe, ist es an der Zeit, die legitime Verwendung anzuwenden und diesen Code zu verwenden, um nicht nur 2 Dimensionen (x,y), sondern drei (ra,dec,z) zu analysieren. In den Datenblättern habe ich nun die Koordinaten von zwei getrennten Galaxien gespeichert. Hier ist der geänderte Code unten:
import math
import pandas
file1 = pandas.read_excel('Book1.xlsx')
file2 = pandas.read_excel('Book2.xlsx')
file1['RA_diff'] = file2['RA'] - file1['RA']
file1['DEC_diff'] = file2['DEC'] - file1['DEC']
file1['Z_diff'] = file2['Z'] - file1['Z']
dist = file1.apply(lambda row: math.hypot(row['RA_diff'], row['DEC_diff', row['Z_diff']]), axis=1)
if dist.values >= .5:
print 'no match'
elif dist.values <= .5:
print True, dist
Dieser Code funktioniert hervorragend nur mit RA und DEC, aber nicht viel mit dem hinzugefügten Z.
Ich hoffe, dass mir jemand bitte einige Hinweise gibt, wie ich diesen ganzen Prozess verkürzen kann, indem ich die Methode verwende:
from astropy.coordinates import SkyCoord
Grundsätzlich: Wie nutze ich dieses Tool zu meinem Vorteil, indem ich (aus zwei separaten Excel-Dokumenten) zwei separate Koordinaten von (ra, dec, z) einlese, um festzustellen, ob die Objekte eine gewisse Nähe zueinander haben?
Meine Recherche hat sich als eher erfolglos erwiesen, die Punkte auf diese Weise gezielt zu analysieren, da ich die Hilfeseiten meistens einfach nicht verstehe. Dies ist mein allererstes Programmierprojekt, also seien Sie bitte vorsichtig mit Ihren Ratschlägen, Empfehlungen, Hilfe, Feedback oder allem anderen, was Sie anbieten können. Danke im Voraus.
Aus der Dokumentation
>>> c1 = SkyCoord(ra=10*u.degree, dec=9*u.degree, distance=10*u.pc, frame='icrs')
>>> c2 = SkyCoord(ra=11*u.degree, dec=10*u.degree, distance=11.5*u.pc, frame='icrs')
>>> c1.separation_3d(c2)
<Distance 1.5228602415117989 pc>
Der Rest des Codes liest nur die Excel-Dateien und druckt die Ergebnisse. Was Sie jetzt haben, ist auch ohne die "z" -Koordinate falsch. Sie können den Abstand zweier Punkte in Kugelkoordinaten nicht mit dem Satz des Pythagoras berechnen: zB (30*, 0*) und (30*, 359*) sollten sehr nahe beieinander liegen. Sie müssen zuerst in kartesische Koordinaten konvertieren, was das Astropiemodul tut.
Justin T
Jakob K
Justin T
Jakob K
Zephyr
numpy.genfromtxt
, um sie einzulesen.Justin T