Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的快速三角逼近_Python_Performance_Trigonometry_Atan2_Great Circle - Fatal编程技术网

python中的快速三角逼近

python中的快速三角逼近,python,performance,trigonometry,atan2,great-circle,Python,Performance,Trigonometry,Atan2,Great Circle,我使用python进行轨迹比较计算,这需要大量的大圆计算。这些计算需要大量的三角函数,而脚本目前在常规math.atan2等实现中的速度非常慢。是否有任何python库可以执行高效的近似计算?我真的更喜欢效率而不是准确性 任何自己实现这一点的指针都是非常受欢迎的。取决于您正在做什么。如果您有矩阵/向量格式的数据,并且希望在许多元素上执行相同的操作,则可以使用numpy data = np.array([...]) sines = np.sin(data) 这将大大加快速度您是否分析了代码以了解

我使用python进行轨迹比较计算,这需要大量的大圆计算。这些计算需要大量的三角函数,而脚本目前在常规math.atan2等实现中的速度非常慢。是否有任何python库可以执行高效的近似计算?我真的更喜欢效率而不是准确性


任何自己实现这一点的指针都是非常受欢迎的。

取决于您正在做什么。如果您有矩阵/向量格式的数据,并且希望在许多元素上执行相同的操作,则可以使用numpy

data = np.array([...])
sines = np.sin(data)

这将大大加快速度

您是否分析了代码以了解瓶颈是什么?这看起来像是一个中弹dark@JBernardo当我从简单的欧几里德计算改为大圆计算时,运行时间几乎从瞬间开始(如果不进行分析,这基本上是瞎猜。另外,大致了解脚本部分的执行时间也非常重要,因此请尝试一下;这是一种常见的方法。使用python中包含的模块
cProfile
,您可以很容易地完成这项工作。也许您可以找到一些有用的东西。如果您想使用trig方法,为什么不使用粗略查找表?计算间隔0-2pi内100个点的(逆)正弦/余弦/正切。然后,对于每个角度mod 2pi,您有一个该角度的所有(逆)三角函数的(粗略)查找表。如果查找不确定,只需计算“实”值(在python+numpy中,我怀疑这会更快……)