Ich habe zwei Eingabe numpy Arrays mit jeweils Breiten- und Längenkoordinaten einer Reihe von Punkten: lats
und lons
.Numpy: Funktion auf zwei numply Arrays anwenden und zwei numpy Arrays zurückgeben
Ich habe eine Funktion geerbt, die jedes (lat,lon)
Paar in ein (E,N)
Paar wandelt:
def convert(lat,lon): #takes two floats as arguments (unit: degrees)
...
computation #Actual function is too long to post
...
return N,E #returns two floats (unit: meters)
Meine Frage: wie könnte ich die gleiche Funktion gleichzeitig auf beiden Eingängen numpy Arrays effizient anwenden?
I der Modifizierung der Funktion dachte so, dass es eine Liste zurückgibt:
return [N,E]
in einer solchen Art und Weise, dass:
rows = int(lat.shape[0]) #lat and lon have the same shape
cols = int(lat.shape[1])
easting=numpy.zeros(shape=(rows,cols))
northing=numpy.zeros(shape=(rows,cols))
for i in range(0, rows):
for j in range(0, cols):
northing=convert(lon[i][j])[0] #first element of the returned list
easting=convert(lat[i][j])[1] #second element of the returned list
Ich habe noch nicht diese getestet, aber es bei der Suche Ich fühle mich nicht sehr wohl, das wird funktionieren. Alle Einsichten werden sehr geschätzt.
Dieses auf die Details der 'convert' Funktion abhängen. Es könnte im wörtlichen Sinne schon so funktionieren, wie Sie es wollen, oder Sie müssen Dinge wie 'math.sin' in' np.sin' umwandeln, oder es könnte im Grunde unmöglich sein, es effizient zu machen, wenn der Code auf APIs angewiesen ist Steuere oder ersetze nicht, dass jeweils ein Elementpaar benötigt wird. – user2357112