Schnelleres Umschalten von kartesisch auf sphärische Koordinaten?

Ich habe ein array von 3 Millionen Datenpunkte aus einem 3-axiz accellerometer (XYZ), und ich möchte hinzufügen 3 Spalten array mit den äquivalenten sphärischen Koordinaten (r, theta, phi). Der folgende code funktioniert, scheint aber viel zu langsam. Wie kann ich besser machen?

import numpy as np
import math as m

def cart2sph(x,y,z):
    XsqPlusYsq = x**2 + y**2
    r = m.sqrt(XsqPlusYsq + z**2)               # r
    elev = m.atan2(z,m.sqrt(XsqPlusYsq))     # theta
    az = m.atan2(y,x)                           # phi
    return r, elev, az

def cart2sphA(pts):
    return np.array([cart2sph(x,y,z) for x,y,z in pts])

def appendSpherical(xyz):
    np.hstack((xyz, cart2sphA(xyz)))

InformationsquelleAutor der Frage BobC | 2010-11-07

Schreibe einen Kommentar