更快的numpy将笛卡尔坐标转换为球坐标?
- 论坛
- 更快的numpy将笛卡尔坐标转换为球坐标?
10 浏览
更快的numpy将笛卡尔坐标转换为球坐标?
我有一个包含300万个数据点的三轴加速度计(XYZ)数组,并且我想要向数组中添加三列,包含等效的球坐标(r,theta,phi)。下面的代码可以实现,但速度似乎太慢了。有什么办法可以改进吗?
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)))
以上代码可以实现功能,但速度较慢。有没有更好的方法可以改进?