Python是彻底面向对象的语言。函数、模块、数字、字符串都是对象。而且彻底支持继承、重载等,有益于加强源代码的复用性。Python相对于Lisp这种传统的函数式编程语言,Python对函数式设计只提供了有限的支持。python
虽然Python可能被粗略地分类为“脚本语言”(script language),但实际上一些大规模软件开发计划也普遍地使用它。Python的支持者较喜欢称它为一种高级动态编程语言,缘由是“脚本语言”泛指仅做简单程序设计任务的语言,如shellscript、VBScript等只能处理简单任务的编程语言,并不能与Python相提并论。程序员
Python自己被设计为可扩充的,提供了丰富的API和工具,以便程序员可以轻松地使用C语言、C++、Cython来编写扩充模块。Python编译器自己也能够被集成到其它须要脚本语言的程序内。所以,不少人还把Python做为一种"胶水语言"(glue language)使用。使用Python将其余语言编写的程序进行集成和封装。算法
Python在执行时,首先会将.py文件中的源代码编译成Python的byte code(字节码),而后再由Python Virtual Machine(Python虚拟机)来执行这些编译好的byte code。这种机制的基本思想跟Java,.NET是一致的。shell
除此以外,Python还能够以交互模式运行,好比主流操做系统Unix/Linux、Mac、Windows均可以直接在命令模式下直接运行Python交互环境。直接下达操做指令便可实现交互操做。编程
提及科学计算,你们首先想起的是Matlab,集数值计算,可视化工具及交互于一身,不过惋惜是一个商业产品。开源方面除了GNU Octave在尝试作一个相似Matlab的工具包外,Python的这几个工具包集合到一块儿也能够替代Matlab的相应功能:NumPy+SciPy+Matplotlib+iPython。同时,这几个工具包,特别是NumPy和SciPy,也是不少Python文本处理&机器学习&数据挖掘工具包的基础,很是重要。最后再推荐一个系列《用Python作科学计算》,将会涉及到NumPy。数组
NumPy几乎是一个没法回避的科学计算工具包,最经常使用的也许是它的N维数组对象,其余还包括一些成熟的函数库,用于整合C/C++和Fortran代码的工具包,线性代数、傅里叶变换和随机数生成函数等。NumPy提供了两种基本的对象:ndarray(N-dimensional array object)和 ufunc(universal function object)。ndarray是存储单一数据类型的多维数组,而ufunc则是可以对数组进行处理的函数。promise
官方主页:http://www.numpy.org/bash
“SciPy是一个开源的Python算法库和数学工具包,SciPy包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其余科学与工程中经常使用的计算。其功能与软件MATLAB、Scilab和GNU Octave相似。 Numpy和Scipy经常结合着使用,Python大多数机器学习库都依赖于这两个模块。”网络
—引用自“Python机器学习库”数据结构
官方主页:http://www.scipy.org/
matplotlib 是python最著名的绘图库,它提供了一整套和matlab类似的命令API,十分适合交互式地进行制图。并且也能够方便地将它做为绘图控件,嵌入GUI应用程序中。Matplotlib能够配合ipython shell使用,提供不亚于Matlab的绘图体验,总之用过了都说好。
官方主页:http://matplotlib.org/
机器学习和数据挖掘这两个概念不太好区分,这里就放到一块儿了。这方面的开源Python工具包有不少,这里先从熟悉的讲起,再补充其余来源的资料,也欢迎你们补充。
首先推荐大名鼎鼎的scikit-learn,scikit-learn是一个基于NumPy, SciPy, Matplotlib的开源机器学习工具包,主要涵盖分类,回归和聚类算法,例如SVM, 逻辑回归,朴素贝叶斯,随机森林,k-means等算法,代码和文档都很是不错,在许多Python项目中都有应用。例如在咱们熟悉的NLTK中,分类器方面就有专门针对scikit-learn的接口,能够调用scikit-learn的分类算法以及训练数据来训练分类器模型。
官方主页:http://scikit-learn.org/
Pandas也是基于NumPy和Matplotlib开发的,主要用于数据分析和数据可视化,它的数据结构DataFrame和R语言里的data.frame很像,特别是对于时间序列数据有本身的一套分析机制,很是不错。这里推荐一本书《Python for Data Analysis》,做者是Pandas的主力开发,依次介绍了iPython, NumPy, Pandas里的相关功能,数据可视化,数据清洗和加工,时间数据处理等,案例包括金融股票数据挖掘等,至关不错。
官方主页:http://pandas.pydata.org/
Machine Learning Python
mlpy is a Python module for Machine Learning built on top of NumPy/SciPy and the GNU Scientific Libraries.mlpy provides a wide range of state-of-the-art machine learning methods for supervised and unsupervised problems and it is aimed at finding a reasonable compromise among modularity, maintainability, reproducibility, usability and efficiency. mlpy is multiplatform, it works with Python 2 and 3 and it is Open Source, distributed under the GNU General Public License version 3.
官方主页:http://mlpy.sourceforge.net/
PyBrain(Python-Based Reinforcement Learning, Artificial Intelligence and Neural Network)是Python的一个机器学习模块,它的目标是为机器学习任务提供灵活、易应、强大的机器学习算法。(这名字很霸气)
PyBrain正如其名,包括神经网络、强化学习(及两者结合)、无监督学习、进化算法。由于目前的许多问题须要处理连续态和行为空间,必须使用函数逼近(如神经网络)以应对高维数据。PyBrain以神经网络为核心,全部的训练方法都以神经网络为一个实例。
Theano 是一个 Python 库,用来定义、优化和模拟数学表达式计算,用于高效的解决多维数组的计算问题。Theano的特色:紧密集成Numpy;高效的数据密集型GPU计算;高效的符号微分运算;高速和稳定的优化;动态生成c代码;普遍的单元测试和自我验证。自2007年以来,Theano已被普遍应用于科学运算。theano使得构建深度学习模型更加容易,能够快速实现多种模型。
Pylearn2创建在theano上,部分依赖scikit-learn上,目前Pylearn2正处于开发中,将能够处理向量、图像、视频等数据,提供MLP、RBM、SDA等深度学习模型。
参见:Windows中安装Python2.7、Windows中安装Python3.7
如今,Linux中通常都内置了Python2.x
在cmd窗口中输入python进入命令行模式,在其中以交互式方式执行。
以下图:
在文件中编写Python脚本文件后缀为.py。进入该文件所在目录直接执行python xxx.py。
可使用IDE进行运行和编写,经常使用的IDE包括:pycharm、pyDev for Eclipse,也可使用Anaconda。
BSD类的Unix系统中,Python脚本能够像shell脚本那样直接执行,只须要在脚本文件开头加一行命令便可,用于指定文件和模式,代码以下:
#!/usr/bin/env python coding……
执行脚本以前,须要给脚本指定执行模式和权限,命令以下:
chmod 775 xxx.py chmod +x xxx.py
以上两种方式都可。
Windows中没有这种方式,直接双击文件运行便可。
Python默认读取py文件时采用的编码格式是ASCII格式,若是文件不是该格式极可能出现乱码问题形成异常。
解决方法:
只要在文件开头加入# -*- coding:UTF-8 -*- 或者 #coding=utf-8来通知Python解释器在读取文件时采用的编码集。
例如:
# -*- coding:utf-8 -*- print "hello world!"
或者
# coding=utf-8 print "hello world!"
完整的脚本文件头:
#!/usr/bin/env python # -*- coding:utf-8 -*- coding……