1.1 Python科学计算生态
2018-02-23 本文已影响0人
快乐的小飞熊
1.1.1 为什么使用python
1.1.1.1 科学家的需求
- 获取数据(模拟、实验控制)
- 操作和处理数据
- 可视化结果、快速理解、绘制高质量图片,可用于报告或者出版。
1.1.1.2 python的优点
- 不需要重新发明轮子:包含一系列丰富的数值计算、画图、数据处理的工具集合。我们不需要重新编写代码来勾画曲线,不需要重新编码傅里叶变换和拟合函数。一切都是现成的,可调用的。
- 易于学习:对于很多问题,不需要太多的学习成本呢,可以快速入手。
- 易于交流:python语法很简单,避免奇怪的符号或冗长的程序规范,其可读行很强。
- 代码高效:python的数值模块计算非常高效,如果花太长的时间写代码换来的执行快速的代码是没有用的,python的目的是开发时间短、执行时间快。
- 通用性:现在python被用于很多不同的问题当中。对于新的问题,无需再学习一门新的语言。
简言之:
1、有丰富的科学计算包
2、逻辑清晰、容易编写、容易阅读、有良好的结构,we code what we think
3、除了科学计算包,还支持其他的包,比如说网页服务、序列端口访问等。
4、免费并开源、被广泛传播、社区充满活力。
5、强大的工作环境:ipython、pycharm、spader、jupyter notebook等。
- 缺点:并不是所有的算法都能在工具包中找到。
1.1.2 python计算科学生态
a. python:一个通用并且现代的计算语言:
- 语言:流控制(if、else)、数据类型(string、int)、数据集合(list,dict)
- 标准库的模块:字符串处理、文件管理、简单的网络协议。
- 大量的专业模块或用Python编写的应用程序:web框架,等等…和科学计算。
- 开发工具(自动测试、文档生成)
b. 核心数值库:
- Numpy:以矩阵为基础的数学计算模块。
- Scipy:更高级的数值计算,优化、回归、插值。
- Matplotlib:2D可视化
c. 更高阶的交互环境:
- ipython
- jupyter
d. 领域特定的包:
- Mayavi:三维可视化
- pandas, statsmodels, seaborn:用于统计
- sympy:用于符号计算
- scikit-image:用于图像处理
- scikit-learn:用于机器学习
1.1.3 开始前:安装工作环境
- 安装Anaconda即可。Anaconda是专注于数据分析的Python发行版本,包含了conda、Python等190多个科学包及其依赖项。
1.4 工作流
- 交互式:ipython、jupyter notebook
- 文本编辑器:Spyder、Pycharm
1.5 Ipython和jupyter使用技巧
- %cpaste:粘贴代码,尤其从网页粘贴代码
- %timeit:计时
- %debug:允许进入后调试
补充学习:优化代码和调试代码。
http://www.scipy-lectures.org/advanced/optimizing/index.html#optimizing-code-chapter
http://www.scipy-lectures.org/advanced/debugging/index.html#debugging-chapter