详解Python中的Numpy、SciPy、MatPlotLib安装与配置


Posted in Python onNovember 17, 2017

用Python来编写机器学习方面的代码是相当简单的,因为Python下有很多关于机器学习的库。其中下面三个库numpy,scipy,matplotlib,scikit-learn是常用组合,分别是科学计算包,科学工具集,画图工具包,机器学习工具集。

numpy :主要用来做一些科学运算,主要是矩阵的运算。NumPy为Python带来了真正的多维数组功能,并且提供了丰富的函数库处理这些数组。它将常用的数学函数都进行数组化,使得这些数学函数能够直接对数组进行操作,将本来需要在Python级别进行的循环,放到C语言的运算中,明显地提高了程序的运算速度。

scipy:主要是一些科学工具集,信号处理工具集(如线性代数使用LAPACK库,快速傅立叶变换使用FFTPACK库)及数值计算的一些工具(常微分方程求解使用ODEPACK库,非线性方程组求解以及最小值求解等)。

scikit-learn:里面有很多机器学习相关的算法(如聚类算法,SVM等)。

Python安装完Numpy,SciPy和MatplotLib后,可以成为非常犀利的科研利器。网上关于这三个库的安装都写得非常不错,但是大部分人遇到的问题并不是如何安装,而是安装好后因为配置不当,在使用时总会出现import xxx error之类的错误。我也是自己摸索了很久才发现如何去正确配置的。下面就详细说下安装和配置的过程。

1.安装Python,这里选择2.7还是3.4都行,不过推荐使用2.7,毕竟现在的教程大部分还是基于2.7的,3.4跟2.7的语法还是略有不同,为了避免语法错误的麻烦,还是推荐大家使用2.7。下载地址为:https://www.python.org/downloads/

2.下载Numpy,SciPy,MatplotLib这三个库的exe,注意,这里用的是exe,因为MatplotLib的使用需要以Numpy的支持,所以最好先装NumPy再装MatplotLib。下载地址:

NumPy: http://sourceforge.net/projects/numpy/files/NumPy/1.9.2/
SciPy: http://sourceforge.net/projects/scipy/files/scipy/0.15.1/
MatPlotLib: http://matplotlib.org/downloads.html

其中NumPy和SciPy没有32和64位的区别,MatPlotLib需要根据自己的系统选择32位和64位的。再次提醒,这三个库一定都要下载对应版本的exe。下载完成后一次安装就是了,他们会自动找到你之前安装好的Python所在的路径的,一路Next到底就行了。

3.在第2步安装完成后,可以在MatPlotLib的Examples页面(http://matplotlib.org/examples/index.html)Copy代码运行,发现一定会出错。这里出的错,大体有三个:

  1. ImportError: matplotlib requires dateutil
  2. ImportError: matplotlib requires pyparsing
  3. No module name six

4.解决No module name six问题,解决办法很简单。把你的安装路径:Python27/Lib/site-packages/scipy/lib中的six.py,six.pyc,six.pyo三个文件拷贝到 你的安装路径:Python27/Lib/site-packages,这个问题就解决了。如何还不行,请记住这个地址(非常重要):http://www.lfd.uci.edu/~gohlke/pythonlibs/

然后下载这个文件:six‑1.9.0‑py2.py3‑none‑any.whl,下载后,利用CMD进入到该文件所在的目录(DOS命令为:cd /d XX:/XXX/six‑1.9.0‑py2.py3‑none‑any.whl 把你自己的six文件的所在路径按格式粘贴进DOS然后回车就行了),然后输入命令:pip install six-1.9.0-py2.py3-none-any.whl,等DOS命令跑完,six不存在的问题就解决了。操作图如下:

详解Python中的Numpy、SciPy、MatPlotLib安装与配置

5.解决ImportError: matplotlib requires dateutil问题,方法和第4步一样,下载python_dateutil‑2.4.2‑py2.py3‑none‑any.whl,然后pip install就可以解决该问题了。操作如下:

详解Python中的Numpy、SciPy、MatPlotLib安装与配置

6.解决ImportError: matplotlib requires pyparsing问题,还如同之前一样,下载pyparsing‑2.0.3‑py2‑none‑any.whl(选择对应的版本,这里有2和3的区别)然后利用pip install安装好就可以了。操作如下:

详解Python中的Numpy、SciPy、MatPlotLib安装与配置

到此,所有的配置就完成了,可以愉快地使用MatPlotLib进行科学画图和计算了。另外提醒一句,Python2.7和Python3.4不要共存,共存的时候安装这几个库会出现莫名其妙地错误,怎么也对不了,推荐只是用Python2.7,。最后,附带一个来自MatPlotLib的画图代码:

from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
from matplotlib import cm

fig = plt.figure()
ax = fig.gca(projection='3d')
X, Y, Z = axes3d.get_test_data(0.05)
ax.plot_surface(X, Y, Z, rstride=8, cstride=8, alpha=0.3)
cset = ax.contour(X, Y, Z, zdir='z', offset=-100, cmap=cm.coolwarm)
cset = ax.contour(X, Y, Z, zdir='x', offset=-40, cmap=cm.coolwarm)
cset = ax.contour(X, Y, Z, zdir='y', offset=40, cmap=cm.coolwarm)

ax.set_xlabel('X')
ax.set_xlim(-40, 40)
ax.set_ylabel('Y')
ax.set_ylim(-40, 40)
ax.set_zlabel('Z')
ax.set_zlim(-100, 100)

plt.show()

效果为:

详解Python中的Numpy、SciPy、MatPlotLib安装与配置

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python正则表达式教程之一:基础篇
Mar 02 Python
python生成密码字典的方法
Jul 06 Python
python基础学习之如何对元组各个元素进行命名详解
Jul 12 Python
python3调用百度翻译API实现实时翻译
Aug 16 Python
局域网内python socket实现windows与linux间的消息传送
Apr 19 Python
解决Python中回文数和质数的问题
Nov 24 Python
python保存log日志,实现用log日志画图
Dec 24 Python
Python post请求实现代码实例
Feb 28 Python
Python调用jar包方法实现过程解析
Aug 11 Python
PyTorch安装与基本使用详解
Aug 31 Python
python简单验证码识别的实现过程
Jun 20 Python
python工具dtreeviz决策树可视化和模型可解释性
Mar 03 Python
Python中super函数的用法
Nov 17 #Python
python使用正则表达式替换匹配成功的组
Nov 17 #Python
python定时利用QQ邮件发送天气预报的实例
Nov 17 #Python
详解python eval函数的妙用
Nov 16 #Python
Python算法之图的遍历
Nov 16 #Python
Python之Scrapy爬虫框架安装及使用详解
Nov 16 #Python
python字典操作实例详解
Nov 16 #Python
You might like
PHP错误Cannot use object of type stdClass as array in错误的解决办法
2014/06/12 PHP
Apache连接PHP后无法启动问题解决思路
2015/06/18 PHP
PHP判断是否是微信打开还是浏览器打开的方法
2019/02/27 PHP
PHP实现关键字搜索后描红功能示例
2019/07/03 PHP
PHP重载基础知识回顾
2020/09/10 PHP
javascript setTimeout和setInterval 的区别
2009/12/08 Javascript
jquery 模拟类搜索框自动完成搜索提示功能(改进)
2010/05/24 Javascript
从零开始学习jQuery (三) 管理jQuery包装集
2011/02/23 Javascript
关于JavaScript的with 语句的使用方法
2011/05/09 Javascript
jquery scroll()区分横向纵向滚动条的方法
2014/04/04 Javascript
js父页面与子页面不同时显示的方法
2014/10/16 Javascript
JavaScript 开发工具webstrom使用指南
2014/12/09 Javascript
浅谈node.js中async异步编程
2015/10/22 Javascript
jQuery 1.9.1源码分析系列(十五)之动画处理
2015/12/03 Javascript
通过设置CSS中的position属性来固定层的位置
2015/12/14 Javascript
基于jquery实现表格无刷新分页
2016/01/07 Javascript
Bootstrap零基础入门教程(二)
2016/07/18 Javascript
使用UrlConnection实现后台模拟http请求的简单实例
2017/01/04 Javascript
利用JQuery实现datatables插件的增加和删除行功能
2017/01/06 Javascript
纯JS实现只能输入数字的简单代码
2017/06/21 Javascript
JavaScript实现滑动导航栏效果
2017/08/30 Javascript
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
2018/01/25 jQuery
JavaScript设计模式之装饰者模式定义与应用示例
2018/07/25 Javascript
Vue将props值实时传递 并可修改的操作
2020/08/09 Javascript
[57:47]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
梅尔倒谱系数(MFCC)实现
2019/06/19 Python
python装饰器代替set get方法实例
2019/12/19 Python
Python常用库大全及简要说明
2020/01/17 Python
pycharm通过ssh连接远程服务器教程
2020/02/12 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
2021/01/05 Python
我的梦想演讲稿500字
2014/08/21 职场文书
校长四风对照检查材料
2014/09/27 职场文书
同意离婚答辩状
2015/05/22 职场文书
Python 可迭代对象 iterable的具体使用
2021/08/07 Python
Python列表的索引与切片
2022/04/07 Python
MyBatis XPathParser解析器使用范例详解
2022/07/15 Java/Android