举几个简单的例子如下:
假设A是一个长度为n的numpy数组:
1.计算A中元素的和,使用A.sum()或者np.sum(A),而不要使用循环求和。
2.判断A中是否有大于1的元素,使用(A>1).any(),不要循环进行判断。
3.将A中大于1的元素取出放入一个新的数组,使用A[A>1],不要循环判断一个一个地取出元素。
4.取出A中指标为奇数的元素,使用A[1::2],不要使用循环。
5.将A中所有元素增大一倍,使用A*=2,不要循环遍历每个元素乘2再赋值。
6…….
Python中做科学计算最常用最基础的工具就是numpy了,有必要好好掌握。下面是Python做科学计算经常会用到的一些模块和软件包:
numpy:Python中最常用的数值计算库,提供了一个通用且功能强大的高维数组结构及大量的科学计算函数(其中相当一部分和scipy有交叉),是Python中几乎所有其他科学计算库的基础。
scipy:在numpy的基础上提供了科学计算中各种常见问题的解决工具,包括数学物理中的各种特殊函数,数值积分,优化,插值,傅立叶变换,线性代数,信号处理,图像处理,随机数和概率分布,统计学等等。
sympy:Python中的符号计算库,支持符号计算、高精度计算、模式匹配、绘图、解方程、微积分、组合数学、离散数学、几何学、概率与统计、物理学等方面的功能,能在很大程度上代替Mathematica和Matlab的符号计算功能。
Ipython:一个Python的交互式开发和计算环境,比Python自带的shell好用且功能强大得多,支持变量自动补全,自动缩进,支持bashshell命令,内置了许多很有用的功能和函数。IPythonnotebook可以将代码、图像、注释、公式和作图集于一体,已经成为用Python做教学、计算、科研的一个重要工具。
matplotlb:Python做科学计算最常用和最重要的画图和数据可视化工具包。
h5py:用Python操作HDF5格式数据的工具。HDF5是一个应用广泛的科学数据存储格式,拥有一系列的优异特性,如支持非常多的数据类型,灵活,通用,跨平台,可扩展,高效的I/O性能,支持几乎无限量(高达EB)的单文件存储等。
pandas:Python中常用的数据分析包,适合时间序列及金融数据分析。
emcee:Python实现的马尔可夫链蒙特卡洛(MCMC)库。
pymc:另一个实现贝叶斯统计模型和马尔科夫链蒙塔卡洛采样的工具。
近些年Python在高性能计算领域的应用也越来越广泛,用Python做并行计算也是一个不错的选择,既简单易用,又能在很多时候媲美C、C++和Fortran的执行性能。用Python做并行计算的途径有很多,比如说使用标准库中的[threading模块](https://docs.python.org/2/library/threading.html)进行线程级别的并行,[multiprocessing模块](https://docs.python.org/2/library/multiprocessing.html)进行进程级别的并行,[concurrent.futures模块](https://docs.python.org/3/library/concurrent.futures.html)实现异步并行,使用[IPython.parallel模块](https://ipython.org/ipython-doc/3/parallel/index.html)进行多种方式的并行,使用[mpi4py包](https://pypi.org/project/mpi4py/)进行MPI消息传递并行计算,等等。如果可以使用C/C++,Fortran或者使用cython为Python编写扩展模块,还可以使用OpenMP并行。对GPU编程则可以使用[pyCUDA](https://documen.tician.de/pycuda/)。偶的个人[简书专题](https://www.jianshu.com/c/5019bb7bada6)和[CSDN博客专栏](https://blog.csdn.net/column/details/26248.html)中有对用Python做并行计算的专门介绍并提供了大量的程序实例。有需要或者感兴趣的可以了解下。