atan 和 atan2 都是反正切函数,返回的都是弧度
对于两点形成的直线,两点分别是 point(x1,y1) 和 point(x2,y2),其斜率对应角度的计算方法可以是:
angle = atan( (y2-y1)/(x2-x1) )或angle = atan2( y2-y1, x2-x1 )
因此可以看出 atan 和 atan2 的区别:
1、参数的个数不同;atan 为单个参数,atan2为两个参数
2、atan2 的优点在于: 如果 x2-x1等于0 ,角度依然可以计算,但是atan函数则需要提前判断,否则就会导致程序出错;
import matplotlib.pyplot as plt
import numpy as np
import math
print (math.atan(1))
print(math.atan2(2,2))
print(np.arctan(1))
x=np.linspace(-np.pi/2,np.pi/2,100)
y = np.arctan(x)
plt.title("atan")
plt.plot(x, y)
plt.show()
值得说明的是使用math.atan无法画图,必须使用np.arctan才可以画图。
ValueError: c of shape (1L, 300L) not acceptable as a color sequence for x with size 300, y with size 300
此处train_Y应该reshape成一个一维向量,而不是作为一个多维矩阵送进去
plt.scatter(X[:, 0], X[:, 1], c=np.squeeze(y))