Python科学计算(一)

作者 J.R. Johansson ([email protected]) http://dml.riken.jp/~rob/

最新版本的 IPython notebook

课程文件 http://github.com/jrjohansson/scientific-python-lectures.

作者其他的 notebook http://jrjohansson.github.com.

一、实验说明

本课主要介绍科学计算,实验环境的安装以及使用等内容。

1. 环境登录

无需密码自动登录,系统用户名shiyanlou

2. 环境介绍

本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到桌面上的程序:

  1. Spyder : Spyder 是一个类 MATLAB IDE 专注于科学计算的 Python IDE。

3. 环境使用

代码编写与命令运行都会在 Spyder IDE 上进行。

实验报告可以在个人主页中查看,其中含有每次实验的截图及笔记,以及每次实验的有效学习时间(指的是在实验桌面内操作的时间,如果没有操作,系统会记录为发呆时间)。这些都是您学习的真实性证明。

二、实验内容

计算在科学中所扮演的角色

传统意义上科学被分为两类:经验科学与理论科学,但在过去的几十年中计算渐渐成为了科学重要的一部分。科学计算在接近理论的同时又包含很多实验工作的特性,因此常常被看作是科学的第三分支。在大多数领域中,计算工作是对经验与理论的一个重要补充,现今大量的论文都包含了数值计算,计算机模拟和建模。

在经验科学与理论科学的领域中已经建立起了完善的规则使得研究结果可以被获取。而在计算机科学中却没有好的指导规范规定源代码与数据必须发布,最近这个议题越来越受到人们的关注,一些著名的期刊,包括科学,都在呼吁论文作者提供处理数据的源代码,这场关于如何促进源代码分发的讨论将持续进行。

引用

科学计算的要求

可复制 与 可重现 是科学方法的两块基石。对于数值工作,遵守这些概念有以下两点实际意义:

  • 可复制:有需要时论文作者能够重新模拟一次并且复制结果,其他科学家在进行相同的计算后应当能得到同样的结果。
  • 可重现:数值模拟所得到的结果可以由方法的独立实现来重现,或者是完全不同的方法来重现。

结论:一个可靠的科学结果应当是可重现的, 一个可靠的科学研究应当是可复制的。

为了实现这些目标,我们需要:

  • 准确地记录下产生论文数据与图表的源代码及其版本号。
  • 记录下所使用的软件的版本号等信息,确保实验环境是能够还原的。
  • 确保旧代码与笔记已经备份,为以后可能的引用做准备
  • 在理想情况下将源代码发布到线上,使其它对其感兴趣的科学家能很容易得到它。

管理源代码的工具

保证科学模拟的可复制与可重现是一个麻烦的工作,不过有很多好的工具能帮到你:

为什么Python适合科学计算?

  • Python 在科学计算中有着重要地位:

    • 大量的社区用户, 易于寻求帮助与查询文档。
  • 在科学计算库方面有着近乎完美的生态系统:
  • 极佳的性能 —— 集成了用 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 环境最简单的方法就是安装一个科学计算发行版:

延伸阅读

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

License

本作品在 知识共享许可协议3.0 下许可授权。

时间: 2024-10-20 22:18:32

Python科学计算(一)的相关文章

Python科学计算之Pandas

Reference: http://mp.weixin.qq.com/s?src=3&timestamp=1474979163&ver=1&signature=wnZn1UtWreFWjQbpWweZXp6RRvmmKwW1-Kud3x6OF0czmyPqv*F6KzQ1i-dKhi4D-QvDjp1mFDdqAHLPrCLgMOb1KXJcbbkU5-QAREDarkCaPumjQlORzVAOma541S0X2MGgysuH18DI2567rBcTSkMHPsVf6sxClfB

windows下安装python科学计算环境,numpy scipy scikit等

背景: 目的:要用Python下的DBSCAN聚类算法. scikit-learn 是一个基于SciPy和Numpy的开源机器学习模块,包括分类.回归.聚类系列算法,主要算法有SVM.逻辑回归.朴素贝叶斯.Kmeans.DBSCAN等,目前由INRI 资助,偶尔Google也资助一点. SciPy是一个开源的Python算法库和数学工具包,SciPy包含的模块有最优化.线性代数.积分.插值.特殊函数.快速傅里叶变换.信号处理和图像处理.常微分方程求解和其他科学与工程中常用的计算.其功能与软件MA

python科学计算

windows下python科学计算库的下载地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/(由于C运行库的问题,scipy在linux下可以用pip安装,而windows下不行) matpoltlib:绘图 numpy:矩阵运算 scipy:科学计算,高阶抽象和物理模型 sklearn:科学计算,多种聚类算法. 数据拟合:http://blog.csdn.net/lsldd/article/details/41251583 遗传算法:http://bl

Python科学计算(二)windows下开发环境搭建(当用pip安装出现Unable to find vcvarsall.bat)

用于科学计算Python语言真的是amazing! 方法一:直接安装集成好的软件 刚开始使用numpy.scipy这些模块的时候,图个方便直接使用了一个叫做Enthought的软件.Enthought是一家位于美国得克萨斯州首府奥斯汀的软件公司,主要使用Python从事科学计算工具的开发.Enthought里面包含了很多库,不需要你自己安装就可以直接使用了. 其实还又很多Python科学计算的集成软件,比如Python(x, y)和WinPython,个人感觉WinPython还是不错的,里面包

linux中安装python科学计算环境-numpy、scipy、matplotlib、OpenCV...

http://blog.csdn.net/pipisorry/article/details/39902327 在Ubuntu中安装numpy.scipy.matplotlib.OpenCV等 和Python(x,y)不一样,在Ubuntu中需要手工安装科学计算的各个模块, 如何安装IPython, NumPy, SciPy, matplotlib, PyQt4, Spyder, Cython, SWIG, ETS, OpenCV: 在Ubuntu下安装Python模块通常可以使用apt-get

目前比较流行的Python科学计算发行版

经常有身边的学友问到用什么Python发行版比较好? 其实目前比较流行的Python科学计算发行版,主要有这么几个: Python(x,y) GUI基于PyQt,曾经是功能最全也是最强大的,而且是Windows系统中科学免费Python发行版的不二选择.不过今时已不同往昔! PythonXY里面的许多包为了兼容性的问题,无法使用最新的程序包.尤其是令人气愤的是MinGW到现在还是古董级的4.5版本,而TDM-GCC现在都4.8.1-3了.不过这个包在你安装了之后,除了占用较大的磁盘空间之外,基本

Python科学计算(两)——时域波形和正弦信号的频谱

Python科学计算(两)-- 时域和频域波形为正弦波形信号生成.计算和显示 # -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as pl import matplotlib import math import random row = 4 col = 4 N = 500 fs = 5 n = [2*math.pi*fs*t/N for t in range(N)] axis_x = np.linspace(

Python科学计算函数库介绍

数值计算库 NumPy为Python提供了快速的多维数组处理的能力,而SciPy则在NumPy基础上添加了众多的科学计算所需的各种工具包,有了这两个库,Python就有几乎和Matlab一样的处理数据和计算的能力了. NumPy和SciPy官方网址: http://www.scipy.org NumPy为Python带来了真正的多维数组功能,并且提供了丰富的函数库处理这些数组.它将常用的数学函数都进行数组化,使得这些数学函数能够直接对数组进行操作,将本来需要在Python级别进行的循环,放到C语

Mac OS X中搭建Python科学计算环境

这个日志也是参考了几位网友的经验(例如这篇日志:http://blog.csdn.net/waleking/article/details/7578517).他们推荐使用Mac Ports这样的软件来管理和安装所有的安装包.按照这里的教程:http://www.macports.org/install.php,需要首先安装Xcode,如果下载网速不好的话,使用浏览器下载可能需要数个小时.这里建议国内的朋友试试迅雷之类的离线下载,可以加速很多.安装好Mac Ports之后,在终端中输入: port

Python科学计算(二)——正弦信号的时域波形与频谱图

Python科学计算(二)-- 正弦信号的时域波形与频域波形生成.计算与显示 # -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as pl import matplotlib import math import random row = 4 col = 4 N = 500 fs = 5 n = [2*math.pi*fs*t/N for t in range(N)] axis_x = np.linspace(