使用python快一年了,主要用来进行数据处理的工作.不过,今天突然发现自己好像还不太入门的样子.

撩python

众所周知,python是解释型语言.那么对于从事机器学习工作的人来说,python的性能无法和c++比,但是python有很多科学计算的包,使得其能力可以和matlab媲美.这就是机器学习和统计工作者偏爱python大法的原因.为了提高效率,python有句名言能一行写的代码绝不写两行.撩妹水平不高,还是直接讲最近用到的函数吧.

numpy.meshgrid()

最近被这个函数折腾得要命,首先就是这个英文单词比较古怪.其实是我英文词汇不够,别人是这个意思:mesh grid(网格).接着我就自作聪明google了一下,很快就有了答案.结果当然是找到了numpy的官网了.仔细瞅了半天,大概好像知道了什么意思.不过心里老是打滚,怎么有这么奇葩的函数,心里总是用莫名的疑惑.我也不知道怎么的,突然就百度了一下,这个函数居然有百度百科词条.一看我就恍然大悟,还是母语好啊.这个函数就是为了画图准备数据用的.在x,y各自的范围内用直线将坐标轴分成若干份,那么我们的坐标系不就是网格了吗(哈哈),之后用一个矩阵存储各个点的x坐标,另一个矩阵存储各个点的y坐标

1
2
3
4
5
# 将-2,2的数据分成4份
xplot = np.linspace(-2, 2, 4)
yplot = np.linspace(-3, 3, 6)
# 构建网格数据
[X,Y]=np.meshgrid(xplot,yplot)

matplotlib.pyplot.contour()

我在网上找python画隐函数的方法,直接就找到它(contour),不过这个单词居然是等高线的意思,瞬间我就蒙了.本着最快实现的原则我就直接用了:

1
2
3
x = np.linspace(0, 4.)
y = np.linspace(0, 4.)[:, None]
plt.contour(x, y.ravel(), x+y-4, [0],colors='y')

不过结果是:既然可以用,.其实很多时候我们都是这么找资料的,都不知道其原理.
今天要画一个图,已知x,y的范围,而且知道这些x,y输入隐函数的结果,就是不知道隐函数.这个问题好像很上面代码的问题不一样,那是因为我们把它当成隐函数看待了,其实别人是等高线x+y-4看上去是隐函数,其实不过是一个矩阵罢了,也就是这个隐函数的结果.[0]表示等高线取的高度,取0正好是隐函数的图像,其它值都是在此基础上平移
差点忘记了,它还有一个好兄弟contourf函数,这个家伙先算等值线,然后用不同的颜色区分开来不同的等值线.

1
2
import matplotlib.pyplot as plt
plt.contourf(X,Y,vals,50,linestyles=None)

总结

毕竟中文是母语,我们可以先查一下百度百科是否有相应的词条,或者直接搜索质量比较高的中文博文.然后再去官方网站查相应函数的功能.