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环境,实验中会用到桌面上的程序:

  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

Python 科学计算-介绍的更多相关文章

  1. Python科学计算之Pandas

    Reference: http://mp.weixin.qq.com/s?src=3&timestamp=1474979163&ver=1&signature=wnZn1UtW ...

  2. Python科学计算库

    Python科学计算库 一.numpy库和matplotlib库的学习 (1)numpy库介绍:科学计算包,支持N维数组运算.处理大型矩阵.成熟的广播函数库.矢量运算.线性代数.傅里叶变换.随机数生成 ...

  3. Python科学计算PDF

    Python科学计算(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1VYs9BamMhCnu4rfN6TG5bg 提取码:2zzk 复制这段内容后打开百度网盘手机A ...

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

    安装matplotlib: pip install matplotlib 背景: 目的:要用Python下的DBSCAN聚类算法. scikit-learn 是一个基于SciPy和Numpy的开源机器 ...

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

    用于科学计算Python语言真的是amazing! 方法一:直接安装集成好的软件 刚开始使用numpy.scipy这些模块的时候,图个方便直接使用了一个叫做Enthought的软件.Enthought ...

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

    经常有身边的学友问到用什么Python发行版比较好? 其实目前比较流行的Python科学计算发行版,主要有这么几个: Python(x,y) GUI基于PyQt,曾经是功能最全也是最强大的,而且是Wi ...

  7. Python科学计算基础包-Numpy

    一.Numpy概念 Numpy(Numerical Python的简称)是Python科学计算的基础包.它提供了以下功能: 快速高效的多维数组对象ndarray. 用于对数组执行元素级计算以及直接对数 ...

  8. python 科学计算及数据可视化

    第一步:利用python,画散点图. 第二步:需要用到的库有numpy,matplotlib的子库matplotlib.pyplot numpy(Numerical Python extensions ...

  9. Python科学计算结果的存储与读取

    Python科学计算结果的存储与读取 总结于2019年3月17日  荆楚理工学院 计算机工程学院 一.前言 显然,作为一名工科僧,执行科学计算,需用Python.PS:快忘记Matlab吧.我用了二十 ...

随机推荐

  1. BZOJ 3527: [ZJOI2014]力(FFT)

    BZOJ 3527: [ZJOI2014]力(FFT) 题意: 给出\(n\)个数\(q_i\),给出\(Fj\)的定义如下: \[F_j=\sum \limits _ {i < j} \fra ...

  2. 洛谷P3434 [POI2006]KRA-The Disks(线段树)

    洛谷题目传送门 \(O(n)\)的正解算法对我这个小蒟蒻真的还有点思维难度.洛谷题解里都讲得很好. 考试的时候一看到300000就直接去想各种带log的做法了,反正不怕T...... 我永远只会有最直 ...

  3. [Luogu3345][ZJOI2015]幻想乡战略游戏

    Luogu 题意: 动态维护带权重心. sol 这是一道写起来很舒服的动态点分治.(不像某些毒瘤题) 我们考虑,如果你选择的补给点不是当前的带权重心,那么带权重心就在补给点的一个子树中(你把补给点当做 ...

  4. Micropython Turnipbit 换挡风扇 旋转按钮控制直流电机转速

    学过物理学的我们都知道换挡风扇的原理,一般按钮控制电感分压或者电容分压,以达到控制电流的目的.那么我们可不可以使用Turnipbit模拟这个系统呢?其实是很简单的.类似于之前用Tpyboard做的智能 ...

  5. SQL基础教程读书笔记-3

    5 复杂查询 5.1 视图 1.表和视图的区别表:保存的是实际的数据视图:保存的是SELECT语句.从视图读取数据时,视图会在内部执行该SELECT语句并创建出一张临时表. 2.视图的优点① 无需保存 ...

  6. C++学习-7

    1.面向过程是:数据与操作分离,数据容易被意外修改 2.面向过程通过私有化的权限进行数据封装 3.类型后辍:类名 operator "" _XXXX(int data)  增加后缀 ...

  7. Java Swing应用程序JLable超链接

    在HTML中设置一个超链接是很容易的,使用<a></a>标签就可以完成了. 在客户端应用程序中,并没有这样的标签,但是可以使用按钮来实现,But 有时候就是想好看一点,不想要按 ...

  8. xml 加载多个properties文件

    xml 配置项: <bean id="propertyConfigurer" class="com.boc.icms.archive.util.ExProperty ...

  9. JAVA获取文件数据 ( xxxxx.json )

    //路径fPixFile filePath = new File(fPix);System.out.print("文件路径:" + filePath);try { if (file ...

  10. springMVC正确使用GET POST PUT和DELETE方法,如何传递参数

    1. 向服务器请求数据:GET 这是标准的http的GET最擅长的, 应该使用GET请求,但是在使用时候我们会需要传递一个或多个参数给服务器, 这些出参数可能是基本数据类型页可能是对象,get方法可以 ...