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. ASP.NET 后台打开新页面

    [TOC] Response.Write 这是最常见的后台打开新页面的方法. Response.Write("<script>window.open('~/FileView.as ...

  2. JQuery移动动画实现点击按钮切换图片--JQuery基础

    直接贴源码了哈,这些都是自己总结的……汗水几何?希望能帮到大家. <%@ Page Language="C#" AutoEventWireup="true" ...

  3. 【CJOJ1167】【洛谷1894】[USACO4.2]完美的牛栏

    题面 Description 农夫约翰上个星期刚刚建好了他的新牛棚,他使用了最新的挤奶技术.不幸的是,由于工程问题,每个牛栏都不一样.第一个星期,农夫约翰随便地让奶牛们进入牛栏,但是问题很快地显露出来 ...

  4. [Shoi2007]Vote 善意的投票

    题目描述 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然每个人都有自己的主见,但是为了照顾一下自己朋友的想法,他们也可以投和自己本来 ...

  5. CODEFORCES 25E Test

    题意 三个字符串,找一个字符串(它的子串含有以上三个字符串)使它的长度最短,输出此字符串的长度. 题解 先枚举字符串排列,直接KMP两两匹配,拼接即可...答案取最小值.. 常数巨大的丑陋代码 # i ...

  6. 百度统计&友盟统计

    一.百度统计 登录百度站长统计账号-->管理 --->代码获取-->复制代码,如 <script> var _hmt = _hmt || []; (function() ...

  7. 使用zxing生成解析二维码

    1. 前言 随着移动互联网的发展,我们经常在火车票.汽车票.快餐店.电影院.团购网站以及移动支付等各个场景下见到二维码的应用,可见二维码以经渗透到人们生活的各个方面.条码.二维码以及RFID被人们应用 ...

  8. python数据类型——字符串类型

    字符串(string) 字符串,就是字符连成一串,是由字符组成的序列.字符串有编码问题,在之前我已经讲过.本节主要讲字符串的使用. 创建字符串,不用多说: a='123abcd' b='diamond ...

  9. ambari下 hive metastore 启动失败

    由字符集引起的hive 元数据进程启动失败 解决方法新增 这2句话 reload(sys)sys.setdefaultencoding('utf8')

  10. EXCEL VLOOKUP函数怎么返回多列结果

    一般VLOOKUP函数只能返回一列的结果,本例介绍如何一次性返回多列结果.   工具/原料   Excel 函数使用方法说明:     首先,原始数据包括姓名.工号.性别和籍贯信息.现在需要根据姓名同 ...