python - 有没有一种快速的方法可以在 Python 中返回相同值的 Sin 和 Cos?

标签 python numpy trigonometry

我需要返回大型数组中每个元素的 sin 和 cos 值。目前我在做:

a,b=np.sin(x),np.cos(x)

其中 x 是一些大数组。我需要保留每个结果的符号信息,所以:

a=np.sin(x)
b=(1-a**2)**0.5

不是一个选项。有没有更快的方法同时返回 sin 和 cos?

最佳答案

我将建议的解决方案与 perfplot 进行了比较并发现没有什么比显式调用 sincos 更好的了。

enter image description here

重现情节的代码:

import perfplot
import numpy as np


def sin_cos(x):
    return np.sin(x), np.cos(x)


def exp_ix(x):
    eix = np.exp(1j * x)
    return eix.imag, eix.real


def cos_from_sin(x):
    sin = np.sin(x)
    abs_cos = np.sqrt(1 - sin ** 2)
    sgn_cos = np.sign(((x - np.pi / 2) % (2 * np.pi)) - np.pi)
    cos = abs_cos * sgn_cos
    return sin, cos


perfplot.save(
    "out.png",
    setup=lambda n: np.linspace(0.0, 2 * np.pi, n),
    kernels=[sin_cos, exp_ix, cos_from_sin],
    n_range=[2 ** k for k in range(20)],
    xlabel="n",
)

关于python - 有没有一种快速的方法可以在 Python 中返回相同值的 Sin 和 Cos?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32397347/

相关文章:

trigonometry - 使用弧度翻转角度

python - django 序列化程序查询数据库的外键 ID

python - Python 中的正则表达式分组

python - 无法对 PyMongo 数据库进行身份验证

python - NumPy 的 : assembling multiple slices into new array

python - 雨流计数算法

python - 从 tkinter 中的不同框架访问小部件

python - 从记录 ndarray 中选择行范围

连接矩形边的算法

javascript - 如何将数据插入只有一位小数的highchart?