Python 科学计算-介绍
Python 科学计算
作者 J.R. Johansson (robert@riken.jp) http://dml.riken.jp/~rob/
最新版本的 IPython notebook
课程文件 http://github.com/jrjohansson/scientific-python-lectures.
作者其他的 notebook http://jrjohansson.github.com.
一、实验说明
本课主要介绍科学计算,实验环境的安装以及使用等内容。
1. 环境登录
无需密码自动登录,系统用户名shiyanlou
2. 环境介绍
本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到桌面上的程序:
- Spyder : Spyder 是一个类 MATLAB IDE 专注于科学计算的 Python IDE。
3. 环境使用
代码编写与命令运行都会在 Spyder IDE 上进行。
实验报告可以在个人主页中查看,其中含有每次实验的截图及笔记,以及每次实验的有效学习时间(指的是在实验桌面内操作的时间,如果没有操作,系统会记录为发呆时间)。这些都是您学习的真实性证明。
二、实验内容
计算在科学中所扮演的角色
传统意义上科学被分为两类:经验科学与理论科学,但在过去的几十年中计算渐渐成为了科学重要的一部分。科学计算在接近理论的同时又包含很多实验工作的特性,因此常常被看作是科学的第三分支。在大多数领域中,计算工作是对经验与理论的一个重要补充,现今大量的论文都包含了数值计算,计算机模拟和建模。
在经验科学与理论科学的领域中已经建立起了完善的规则使得研究结果可以被获取。而在计算机科学中却没有好的指导规范规定源代码与数据必须发布,最近这个议题越来越受到人们的关注,一些著名的期刊,包括科学,都在呼吁论文作者提供处理数据的源代码,这场关于如何促进源代码分发的讨论将持续进行。
引用
Reproducible Research in Computational Science, Roger D. Peng, Science 334, 1226 (2011).
Shining Light into Black Boxes, A. Morin et al., Science 336, 159-160 (2012).
The case for open computer programs, D.C. Ince, Nature 482, 485 (2012).
科学计算的要求
可复制 与 可重现 是科学方法的两块基石。对于数值工作,遵守这些概念有以下两点实际意义:
可复制:有需要时论文作者能够重新模拟一次并且复制结果,其他科学家在进行相同的计算后应当能得到同样的结果。
可重现:数值模拟所得到的结果可以由方法的独立实现来重现,或者是完全不同的方法来重现。
结论:一个可靠的科学结果应当是可重现的, 一个可靠的科学研究应当是可复制的。
为了实现这些目标,我们需要:
准确地记录下产生论文数据与图表的源代码及其版本号。
记录下所使用的软件的版本号等信息,确保实验环境是能够还原的。
确保旧代码与笔记已经备份,为以后可能的引用做准备
在理想情况下将源代码发布到线上,使其它对其感兴趣的科学家能很容易得到它。
管理源代码的工具
保证科学模拟的可复制与可重现是一个麻烦的工作,不过有很多好的工具能帮到你:
版本控制系统 (RCS) 软件:
- git - http://git-scm.com
- mercurial - http://mercurial.selenic.com 也就是
hg - subversion - http://subversion.apache.org 也就是
svn
线上源代码仓库:
- Github - http://www.github.com
- Bitbucket - http://www.bitbucket.com
为什么Python适合科学计算?
Python 在科学计算中有着重要地位:
- 大量的社区用户, 易于寻求帮助与查询文档。
在科学计算库方面有着近乎完美的生态系统:
- numpy: http://numpy.scipy.org - Numerical Python
- scipy: http://www.scipy.org - Scientific Python
- matplotlib: http://www.matplotlib.org - graphics library
极佳的性能 —— 集成了用 C 与 Fortran 写的经过高度优化的代码:
- blas, altas blas, lapack, arpack, Intel MKL, ...
良好的支持
- 多进程多线程平行计算
- 进程间通信 (MPI)
- GPU 计算 (OpenCL 与 CUDA)
容易获取,适合高性能计算机集群。
不需要许可证费用。
科学 Python 软件栈

Python 环境
这里介绍几种科学计算会使用到的 python 环境
IPython
IPython是一种基于Python的交互式解释器。相较于原生的Python Shell,IPython提供了更为强大的编辑和交互功能。
IPython 的特性包括:
- 命令历史记录
- Tab 自动补全
- 对象自省,自动提取对象的文档内容
- 与操作系统 shell 有良好的交互
- 支持后端多平行线程,可以运行在计算集群或者云服务上
IPython notebook
IPython notebook是一个基于HTML的 notebook 环境 , 类似于 Mathematica 或者 Maple。

尽管使用web浏览器作为图形接口,IPython notebooks 一般都在本地运行,要开启一个新的 IPython notebook,可以运行以下命令:
$ ipython notebook <directory>
Spyder
Spyder 是一个类 MATLAB IDE 的 Python IDE。 它拥有传统IDE环境所拥有的的优点。
Spyder 的优点:
- 强大的代码编辑器,动态代码自省,内集成 python 调试器。
- 变量浏览器,IPython 命令行终端。
- 集成了文档与帮助。
Python的版本
Python 有两个版本:Python2 与 Python3。Python3 最终会取代 Python2, 但它并没有兼容 Python2, 大量现存的 python 代码与包是用 Python2 写的,它也仍然是最广泛使用的版本。不过在本实验中,Python2 或是Python3都是可以的。 输入以下命令查看 Python 版本:
$ python --version
Python 2.7.3
$ python3.2 --version
Python 3.2.3
安装
Linux
在 Ubuntu Linux 中安装科学计算所用的工具:
$ sudo apt-get install python ipython ipython-notebook
$ sudo apt-get install python-numpy python-scipy python-matplotlib python-sympy
$ sudo apt-get install spyder
Windows
Windows 缺乏一个好的包管理系统,所以搭建一个 Python 环境最简单的方法就是安装一个科学计算发行版:
- Enthought Python Distribution. EPD 是商业产品,不过如果是为了学术目的则可以免费获取。
- Anaconda CE. Anaconda Pro 是商业产品, 不过 Anaconda 社区版是免费的。
- Python(x,y). 开源。
延伸阅读
- Python. 官方 Python 网站。
- Python tutorials. 官方 Python 教程。
- Think Python. 免费的 Python 书籍。
Python 与 模块版本
既然有不同版本的 Python 且每个 Python包有自己的发布周期与版本号,那么就需要记录下所有不同软件包的版本号为了能够重现 IPython notebook,保证 notebook 中的代码运行结果是一致的。 为了鼓励记录版本号这一行为,作者写了一个 IPython 扩展,能够帮助生成版本号表格,使用步骤如下:
安装 IPython 扩展,运行:
# you only need to do this once
%install_ext http://raw.github.com/jrjohansson/version_information/master/version_information.py
Installed version_information.py. To use it, type:
%load_ext version_information
运行下列代码生成版本表格:
%load_ext version_information
%version_information numpy, scipy, matplotlib, sympy

Python 科学计算-介绍的更多相关文章
- Python科学计算之Pandas
Reference: http://mp.weixin.qq.com/s?src=3×tamp=1474979163&ver=1&signature=wnZn1UtW ...
- Python科学计算库
Python科学计算库 一.numpy库和matplotlib库的学习 (1)numpy库介绍:科学计算包,支持N维数组运算.处理大型矩阵.成熟的广播函数库.矢量运算.线性代数.傅里叶变换.随机数生成 ...
- Python科学计算PDF
Python科学计算(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1VYs9BamMhCnu4rfN6TG5bg 提取码:2zzk 复制这段内容后打开百度网盘手机A ...
- windows下安装python科学计算环境,numpy scipy scikit ,matplotlib等
安装matplotlib: pip install matplotlib 背景: 目的:要用Python下的DBSCAN聚类算法. scikit-learn 是一个基于SciPy和Numpy的开源机器 ...
- Python科学计算(二)windows下开发环境搭建(当用pip安装出现Unable to find vcvarsall.bat)
用于科学计算Python语言真的是amazing! 方法一:直接安装集成好的软件 刚开始使用numpy.scipy这些模块的时候,图个方便直接使用了一个叫做Enthought的软件.Enthought ...
- 目前比较流行的Python科学计算发行版
经常有身边的学友问到用什么Python发行版比较好? 其实目前比较流行的Python科学计算发行版,主要有这么几个: Python(x,y) GUI基于PyQt,曾经是功能最全也是最强大的,而且是Wi ...
- Python科学计算基础包-Numpy
一.Numpy概念 Numpy(Numerical Python的简称)是Python科学计算的基础包.它提供了以下功能: 快速高效的多维数组对象ndarray. 用于对数组执行元素级计算以及直接对数 ...
- python 科学计算及数据可视化
第一步:利用python,画散点图. 第二步:需要用到的库有numpy,matplotlib的子库matplotlib.pyplot numpy(Numerical Python extensions ...
- Python科学计算结果的存储与读取
Python科学计算结果的存储与读取 总结于2019年3月17日 荆楚理工学院 计算机工程学院 一.前言 显然,作为一名工科僧,执行科学计算,需用Python.PS:快忘记Matlab吧.我用了二十 ...
随机推荐
- Python Cookbook(第3版)中文版:15.20 处理C语言中的可迭代对象
15.20 处理C语言中的可迭代对象¶ 问题¶ 你想写C扩展代码处理来自任何可迭代对象如列表.元组.文件或生成器中的元素. 解决方案¶ 下面是一个C扩展函数例子,演示了怎样处理可迭代对象中的元素: s ...
- Keras官方中文文档:Keras安装和配置指南(Windows)
这里需要说明一下,笔者不建议在Windows环境下进行深度学习的研究,一方面是因为Windows所对应的框架搭建的依赖过多,社区设定不完全:另一方面,Linux系统下对显卡支持.内存释放以及存储空间调 ...
- 【BZOJ3670】动物园(KMP算法)
[BZOJ3670]动物园(KMP算法) 题面 BZOJ 题解 神TM阅读理解题 看完题目之后 想暴力: 搞个倍增数组来跳\(next\) 每次暴跳\(next\) 复杂度\(O(Tnlogn)\) ...
- mybatise插入返回主键ID
之前遇到过一次解决了,结果这次又搞了半天,在这里记录一下吧. <insert id="insertUser" useGeneratedKeys="true" ...
- sql注入之一次艰难的绕过-三层防护(oracle)
打开:www.xxxx.com/news/detail.jsp?id=2862 我们经过测试知道此处含有sql注入.我们尝试下: http://www.xxxxxx.com/news/detail.j ...
- css学习の第三弹—盒模型的创建和使用
一.css盒模型: 元素分类: 块状元素.内联元素(又叫行内元素)和内联块状元素. >>常用的块状元素有: <div>.<p>.<h1>...<h ...
- Cassandra配置多节点集群以及使用雅虎YCSB压测Cassandra 3.11
这几天在搭Cassandra集群以及对Cassandra的性能测试,步骤还挺多,记录一下. 关于Caaandra在服务器上配置多节点集群,可以参考一下文章: http://blog.csdn.net/ ...
- 解决iar试调时程序无法进入主函数的问题
尼玛,我TM当时核心板上还接着摄像头,啊啊啊啊,必须吧摄像头关了,不然,k60初始化时会检测io口状态,状态不正确当然无法进入主函.摄像头上电即输出数据,会对单片机上电检测造成干扰.
- webpack学习(六)打包压缩js和css
打包压缩js与css 由于webpack本身集成了UglifyJS插件(webpack.optimize.UglifyJsPlugin)来完成对JS与CSS的压缩混淆,无需引用额外的插件, 其命令we ...
- passwd命令使用
2018-03-01 10:01:06 例1:passwd username 直接修改用户的密码普通用户可以且只能修改自己的密码,root用户可以修改任何人的密码[root@localhost ~] ...