Was ich versuche zu tun, ist eine Tabelle basierend auf einer stückweisen Funktion in Python zu machen. Zum Beispiel, sagen, dass ich diesen Code schrieb:Vergleichen von Skalaren mit Numpy-Arrays
import numpy as np
from astropy.table import Table, Column
from astropy.io import ascii
x = np.array([1, 2, 3, 4, 5])
y = x * 2
data = Table([x, y], names = ['x', 'y'])
ascii.write(data, "xytable.dat")
xytable = ascii.read("xytable.dat")
print xytable
Dies funktioniert wie erwartet, es eine Tabelle druckt die x
Werte 1 bis 5 und y
Werte 2, 4, 6, 8, 10.
hat aber Was ist, wenn ich statt y
x * 2
nur dann haben möchte, wenn x
3 oder weniger ist, und y
x + 2
sonst sein?
Wenn ich hinzufügen:
if x > 3:
y = x + 2
heißt es:
Der Wahrheitswert eines Arrays mit mehr als einem Element nicht eindeutig ist. Verwenden Sie a.any() oder a.all()
Wie kann ich meine Tabelle so codieren, dass sie als stückweise Funktion funktioniert? Wie kann ich Skalare mit Numpy-Arrays vergleichen?
Diese Frage hat nichts mit der Astropie oder der Table-Klasse zu tun. So lesen Sie Ihre Daten ein. Sie sollten Ihre Frage mit "numpy" markieren und für das Beispiel einfach die Nummernfelder x, y verwenden. Um zu tun, was Sie wollen, verwenden Sie [numpy.where] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html) oder [numpy.choose] (http: // docs. scipy.org/doc/numpy/reference/generated/numpy.choose.html). – Christoph
@Christoph: guter Punkt; aktualisierte Tags – bernie