np.arctan2和np.arctan

2024-06-13 14:52
文章标签 np arctan arctan2

本文主要是介绍np.arctan2和np.arctan,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

np.arctan2 和 np.arctan 都是用于计算反正切函数的 NumPy 函数,但它们的使用和功能有所不同。

np.arctan2

np.arctan2(y, x) 计算 atan2(y,x),即从坐标 (x,y)到原点的角度(弧度)。它考虑了两个参数的符号来确定正确的象限,返回值在 [−π,π]范围内。

import numpy as np
# 计算从原点到 (1, 1) 的角度
angle = np.arctan2(1, 1)
print(angle)  # 输出 0.7853981633974483,相当于 π/4

优点

  • 可以正确处理所有象限的角度。
  • 不会因除以零而出错。

np.arctan

np.arctan(x) 计算 atan(x),即反正切函数,返回值在 [−π/2,π/2]范围内。该函数只接受一个参数,并且假定输入是正切值(即 y/x)。

import numpy as np
# 计算正切值为 1 的角度
angle = np.arctan(1)
print(angle)  # 输出 0.7853981633974483,相当于 π/4

局限性

  • 只能处理第一和第四象限的角度。
  • 无法单独判断 x 和 y 的符号,无法确定具体象限。

区别总结

  • np.arctan2 使用两个参数 y 和 x 计算角度,可以处理所有象限的角度。
  • np.arctan 仅使用一个参数,计算反正切值,返回值范围为 [−π/2,π/2],无法区分象限。

小例子

比如(-1,-1),已知在第三象限

np.arctan2(-1, -1) # -2.356194490192345,弧度
# 转成角度
np.arctan2(-1, -1)*180/np.pi # -135° 角度
np.arctan((-1)/(-1)) # 0.7853981633974483,弧度
# 转成角度
np.arctan((-1)/(-1))*180/np.pi # 45° 角度

附录

如何根据弧度判断在第几象限

可以通过以下方法判断一个给定弧度在笛卡尔坐标系的哪个象限:

第I象限: 角度在 0 和 π/2​ 之间
第II象限: 角度在 π/2​ 和 π 之间
第III象限: 角度在 −π 和 −π/2​ 之间
第IV象限: 角度在 −π/2​ 和 0 之间
  • 0.5 在第I象限
  • 2.0 在第II象限
  • -1.0 在第IV象限
  • -3.0 在第III象限 π 和 -π 位于坐标轴上
  • π/2 位于坐标轴上,或根据需要被划分为第I象限或第II象限
  • -π/2 位于坐标轴上,或根据需要被划分为第III象限或第IV象限

这里假设输入的弧度在 [−π,π]范围内。 如果弧度不在这个范围内,可以使用 np.arctan2 来计算,确保结果在 [−π,π] 范围内。

弧度和角度单位转换

  • 弧度转换为角度:角度 = 弧度 × (180 / π)
  • 角度转换为弧度:弧度 = 角度 × (π / 180)

这篇关于np.arctan2和np.arctan的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1057619

相关文章

可能与不可能的边界 P/NP问题趣史

第一章 金券   假如我们想在数以万计的巧克力中找到一张含有金券的巧克力需要怎么做?(一共有5张金券)   有大量的时间,请大量的人,大量的金钱(买下非常非常多的巧克力),然后人工筛选     Mary的公司定制了一个计划,需要从她的家乡出发,然后经过48个州,并像这些州推销木锥,为了 节省开支,需要定制一个路线,即启动为Mary的家乡,然后经过48个州,距离最短。其实这个计算相   当于 48

P problem、NP problem、NP-complete problem、NP-hard problem是什么

时间复杂度并不是表示一个程序解决问题需要花多少时间,而是当程序所处理的问题规模扩大后,程序需要的时间长度对应增长得有多快。 一、多项式时间(Polynomial time) 多项式复杂度 容易看出,前面的几类复杂度被分为两种级别,其中后者的复杂度无论如何都远远大于前者。 像等,我们把它叫做多项式级复杂度,因为它的规模n出现在底数的位置; 非多项式级的复杂度 另一种像是等,它

NumPy(二):创建数组【生成固定范围的数组:arange、linspace】【生成0和1的数组:zeros()等】【从现有数组生成:array、asarray】【生成随机数组:np.random】

生成0和1的数组 np.ones()np.ones_like()从现有数组中生成 np.array – 深拷贝np.asarray – 浅拷贝 生成固定范围数组 np.linspace() nun – 生成等间隔的多少个 np.arange() step – 每间隔多少生成数据 np.logspace() 生成以10的N次幂的数据 生成随机数组 正态分布 里面需要关注的参数:均值:u

TensorFlow测试程序报异常:FutureWarning: Conversion of the second argument of issubdtype from `float` to `np

使用安装好的tensorflow-gpu 进行程序测试时出现异常: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(

什么是NP问题,什么是NP hard问题,什么是NP完全问题

先来看一个小故事:(转自:http://zhm2k.blog.163.com/blog/static/5981506820095233143571/) 假如老板要你解决一个问题,你绞尽脑汁还是想不出来,叫天天不应,叫地地不灵,这时你走进老板办公室,可以采取3种策略: 1) 一副倒霉像,神情猥琐,可怜巴巴的说:老板,我没做出来,我想我是太蠢了…… boss:蠢材!滚! (失败……) 2)

np.copy()中的C, F含义

多维数组在内存中的存储顺序问题。 以一个二维数组a[2][2]为例,在C语言中,其在内存中存储为 a[0][0] a[0][1] a[1][0] a[1][1] 而在Fortran语言中,其顺序为 a[0][0] a[1][0] a[0][1] a[1][1]

【Numpy】np.unique去重复

numpy.unique(ar, return_index=False, return_inverse=False, return_counts=False, axis=None) 去除重复,返回索引值,排序 >>> np.unique([1, 1, 2, 2, 3, 3])array([1, 2, 3])>>> a = np.array([[1, 1], [2, 3]])>>>

【Numpy】np.savetxt保存时数据不使用科学计数法形式

使用np.savetxt可以dump数据 np.set_printoptions(suppress=True)np.set_printoptions(precision=4) #设精度np.savetxt('data_name‘, data.view(-1, 1), fmt='%.04f') #保留4位小数 numpy在print时会有...省略掉中间部分,如果希望显示处完整数组:

np.identity和np.eye

numpy.identity(n, dtype=None) >>> np.identity(3)array([[ 1., 0., 0.],[ 0., 1., 0.],[ 0., 0., 1.]]) numpy.eye(N, M=None, k=0, dtype=< class ‘float’>, order=’C’) Parameters: N : int 行数 M : i

numpy.random.uniform、np.random.choice

numpy.random.uniform介绍: 函数原型:  numpy.random.uniform(low,high,size) 功能:从一个均匀分布[low,high)中随机采样,注意定义域是左闭右开,即包含low,不包含high. 参数介绍:           low: 采样下界,float类型,默认值为0;     high: 采样上界,float类型,默认值为1;     si