Ich versuche, die Anzahl der Werte über den gestrichelten, gepunkteten, gestrichelten und gepunkteten Kurven in meinem Diagramm zu extrahieren.Python - Anzahl der Elemente im Array über einer gekrümmten Funktion zurückgegeben
Ich kann immer die Anzahl der Punkte Augapfel, die das Ausmaß dieser Kurven überschreiten, aber ich will keine Fehler in diesem Verfahren riskieren.
Zunächst werden diese Kurven durch eine Massenvariable und eine Abstandsvariable I in meinem Code Escape_Velocity
definiert. Es ist Teil eines Klassenprofils, das ich gemacht habe.
import numpy as np
import NFW_Profile as NFW
h0 = 0.704
NFWc12 = NFW.Profile(c=12.5, z=0.0, h=h0)
nfwEsc = NFWc12.Escape_Velocity(Mass, Radius)
Auf meinem Grundstück sind die Kurven auf dieser Funktion basiert, in dem ich einen beliebigen Mass
Wert auswählen und Radius
einen np.linspace
Wert zugeführt.
Die Werte auf meinem Grundstück sind aus meiner Analyse von Datensätzen, in denen wir RadVel
sein, um die y-Achse Werte „Radial Velocity“ und Dist
der x-Achse Werte „galaktozentrischen Distance“ sein nennen kann.
Der Schlüssel ist, dass beide Arrays von Elementen die gleiche Dimension haben und dass sie miteinander indiziert werden können. Zum Beispiel entspricht der 20. indizierte Wert RadVel
dem 20. indizierten Wert von Dist
.
Also mein Plan aus zu
- Wählen Sie ein willkürlicher Wert von
Mass
- ein Element Nehmen von
Dist
- -Feed, die
Escape_Velocity
- zu schätzen Wenn der
RadVel
Wert, entsprechend zu dem Element, dasEscape_Velocity
zugeführt wird, ist größer als derEscape_Velocity
Wert, es coat ts. Wenn der Wert
Escape_Velocity
größer ist als der entsprechende WertRadVel
, wird dieser Wert nicht berücksichtigt.import numpy as np import NFW_Profile as NFW h0 = 0.704 NFWc12 = NFW.Profile(c=12.5, z=0.0, h=h0) def UnboundSubhalos(mass, Dist): Vesc = NFWc12.Escape_Velocity(mass, Dist) PosValues = [i for i in RadVel if i => Vesc.all()] NegValues = [i for i in RadVel if i <= -Vesc.all()] return len(PosValues) + len(NegValues)
Also, was ist die Frage? Der einzige Vorschlag, den ich habe, ist in Ihrer 'UnboundSubhalos' -Funktion, die Sie tun könnten,' np.count_nonzero (np.abs (i)> = Vesc.all()) 'zurückzugeben' –