专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

如何用Python科学计算中的矩阵替代循环_CSS学习

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/4 8:06:55       共计:3580 浏览

如何用Python科学计算中的矩阵替代循环?

建议尽量使用 numpy 中的数组整体或者切片操作,以避免循环,特别是多重循环,以显著地提高科学计算的效率。

举几个简单的例子如下:

假设 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 好用且功能强大得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数。 IPython notebook 可以将代码、图像、注释、公式和作图集于一体,已经成为用 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 做并行计算的专门介绍并提供了大量的程序实例。有需要或者感兴趣的可以了解下。

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:华为手机怎么刷新页面_CSS学习 | ·下一条:毛边玻璃是什么玻璃_CSS学习

Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有