Python 的科学计算生态

科学计算的开山之石:Python

第一章 Python 的科学计算生态

1.1 为什么是选择Python?

1.1.1 科学人员的需求

  • 获取数据(模仿,验证控制)
  • 操作、处理数据
  • 易于反映问题的结果可视化和高质量适于发布的图形

1.1.2 Python的长处

  • 丰富的基础数据处理方法,图形和数据处理工具,不需要重复造轮子
  • 易于掌握:多数科学家不以编程为业,也未特别训练,他们需要的是快速构图,平滑信号,傅里叶变换的快速处理能力
  • 易于交流:让代码可以不需改变存在于实验室,公司环境之间。代码应该像合作者,学生设置顾客的通俗读物一样易于理解。Python的语法简单,少有奇怪的符号或冗长的规则使得读者可以不必了解代码的内部机制便可以用数学和科研的思维去理解
  • 高效的代码:Python数据模块计算非常高效而无需专业的编写代码的能力,Python的目标是更少的开发时间可更少的执行时间
  • 普遍:Python是可以解决多个领域问题的语言。学习Python可以不需要为某一类问题而学习特定的处理方式

1.1.3 Python与其他编程语言比较

编译语言:C,C++,Fortran...

  • 优势:

    1. 快。对于繁重的计算,这些语言表现最好
  • 劣势:

    1. 令人痛苦的使用。非交互式开发,必要的编译步骤,繁杂的语法,手动内存管理。对于非程序员是很难的语言。

Matlab脚本语言:

  • 优势:

    1. 在各个不同的领域,有丰富的科学计算类库。使用编译语言编写的类库使得其执行非常快速
    2. 舒适的编程环境:贴心,集成的编辑器等等优点。
    3. 可用的商业化支持。
  • 局限:

    1. 基本语言能力低,无法满足高级用户。
    2. 收费。

Julia

  • 优势:

    1. 快速的编码,交互性强并且简洁
    2. 便于调用Python或C
  • 局限:

    1. 生态限制科学计算
    2. 不成熟

其他脚本语言:Scilab, Octave,R,IDL,etc。

  • 优势:

    1. 开源免费,至少比matlab经济
    2. 一些软件十分精致与一个领域,可编写可读性高结构性好的编码:“code what we think”
  • 局限:

    1. 比matlab的算法少而且编程语言也没有太大的开拓发展
    2. 一些只适用于一些领域

Python

  • 优势:

    1. 非常丰富的科学计算库
    2. 语法贴合思维逻辑,可编写结构性好,可读性高的代码:“code what we think”
    3. 除了科学计算,其他类库同样丰富(网页服务器,序列化端口访问等)
    4. 免费开源,广为使用,有活力的开发社区
    5. 种类丰富的开发环境:IPython,Spyder,Jupyter notebook,Pycharm,Visual Studio Code
  • 局限:

    1. 没有十分特有的算法,对于那些特定的软件或工具箱

1.2 Python的科学计算生态

不像Matlab和R,Python不预先绑定一系列的科学计算模块。下述介绍可辅助科学计算环境搭建的基本模块:

Python,一个泛型和现代计算语言

  • 语言本身:流控制,数据类型,数据集合,等
  • 基本库和模块:字符串处理,文件管理,简单网络协议
  • 大量的专用模块和软件:网络框架等等,还有科学计算
  • 开发工具(自动化测试,文档生成)

更多数据处理库

  • Numpy:强大的数据计算数组对象,和规范化的操作。http://www.numpy.org
  • Scipy:高级的数据规范。优化,回归,差值等
  • Matplotlib:2-D可视化,便于发布的构图

先进的交互式环境

  • IPython:一个高级的Python命令行控制台
  • Jupyter:浏览器中的笔记本

特定领域包

  • Mayavi:3-D可视化
  • pandas,statsmodels,seaborn:统计
  • sympy:符号计算
  • scikit-image:图像处理
  • scikit-learn:机器学习

还有很多没有记录在本文档

1.3 开始之前:安装工作环境

Python 有许多的发行版,有很多方式去安装。我们更推荐安装一个科学计算的发行版,会有许多优化的科学计算模块。

Warning:你应该安装Python3
Python2.7支持维护截止于2020.1.1

Linux 环境下

如果你使用最近的发行版,有很多已经根据可能已经打包好,推荐使用包管理器。

其他系统平台

一些大而全的Python发行版

  • Anaconda
  • EPD
  • WinPython

1.4 工作流:交换环境和文本编辑器

交互式工作以测试和理解算法:在这以部分,我们描述交互式和命令行式结合的工作流。

Python 是一个通用语言。因此,没有之一确定的工作环境去选择,也不止一种使用方式,比如网络服务器,嵌入式设备。这使得入门很难去找一个合适的方式。

1.4.1 交互式工作

我们推荐IPython作为交互式命令行,或他的继任者,Jupyter notebook。帮你很顺手,方便的去理解算法。

在notebook下,按 Shift+ Enter去运行

1.4.2 在编辑器细化的工作

随着你的前进,创建一个可以重复使用的Python 文件同样很重要,而不仅仅是在交互式工作。因此,一个强大的编辑器大有裨益。这是一些强大又易于使用的编辑器:

  • Spyder:集成IPython,调试器,分析器...
  • PyCharm:集成IPython,调试器,notebooks... (同时有免费和收费的版本)
  • Visual Studio Code:集成Python命令行,notebooke,调试器...
  • Atom

有些编辑器集成了各种科学计算的Python发行版,你可以在菜单找到他们

1.4.3 IPython 和 Jupyter 的建议和技巧

用户手册包含丰富的信息,此处我们做一个4个特性的简单介绍:history,tab completion,magic functions,和 aliases。

Command history 类比Unix的shell,IPython的命令行支持命令记录。按上下键可以翻动记录显示最近使用的

Tab Completion,是方便的代码补全功能

Magic functions ,格式前缀‘%’使用对于的功能

  • %cd:change current directory
  • %cpaste:允许粘贴代码,对Python命令行前缀“>>>”和IPython的“in [3]”十分有效
  • %timeit:允许你多次执行代码段,使用标准库的timeit模块
  • %debug:允许你进入出错调试(post-mordem)。也就是说,当你执行可能抛出异常的代码时,使用这个指令将进入出错的代码断点

Aliases 同时,IPython载有丰富的aliases(别名)模拟通用的Unix命令行工具,你如 ls 是显示文件夹文件项,以及cprm

后续第二章:Python编程语言

你可能感兴趣的:(python,科学计算,数据科学,numpy,scipy)