当前位置: 首页 > 后端技术 > Python

科学计算编程涉及的技术栈简介

时间:2023-03-26 01:48:59 Python

简介上半年在做毕业设计的时候负责一个Python数据分析相关的课题。具有分享的价值,对于那些对科学计算(现在俗称数据科学)还有一知半解的人来说,起到一个入门科普的作用,所以写了这篇文章。2.1.1科学计算编程语言比较MATLAB语言介绍:Matlab是MathWorks公司开发的科学计算软件,其软件模式为本体加扩展工具箱。具有强大的矩阵计算和数据可视化能力。一方面,它可以实现数值分析、最优化、统计偏微分方程的数值求解、自动控制、信号处理等多个领域的数学计算。另一方面,它可以实现二维和三维图形。、3D场景生成和渲染、科学计算可视化、图像处理、虚拟现实和地图制作等功能[13]。不过,值得注意的是,MATLAB是商业软件,软件价格昂贵,而且就软件社区生态而言,目前在数据科学领域越来越不受欢迎。以“MATLABMachineLearning”和“pythonmachinelearning”为关键词在GoogleAnalytics[14]中进行比较,如图2.1所示,你会发现MATLAB数据科学社区的活跃程度远不如Python数据科学社区。从拥抱活跃的数据科学社区,遇到问题就能找到解决方案的角度来看,使用Python显然更有利于课题的后续研发。图2.1“MATLABMachineLearning”和“pythonmachinelearning”谷歌分析结果对比R语言介绍:与MATLAB类似,R语言用于数据处理和统计分析,深受大多数统计学家的喜爱。R语言脱胎于AT&T实验室开发的统计语言S语言,与S语言基本兼容[15]。R语言是开源和免费的,由一个庞大而活跃的全球研究社区维护,并受到许多统计学家的欢迎。Julia语言简介:Julia是一种专门为高性能数值计算而设计的高级动态编程语言。它在分布式并行化、精确数值计算等方面提供独特的支持,并包含大量可扩展的数学函数库。尤其是在线性代数、随机数生成、信号处理和字符串处理等领域,Julia集成了许多基于C和FORTRAN的成熟优秀的开源库,具有高性能和高效率[16]。然而,Julia于2012年推出,目前仍在蓬勃发展中。尽管前景可观,但其在科学计算领域的普及程度远不及Python。Python语言介绍:Python语言诞生于1989年,创始人是GuidoVanRossum。它是一种弱类型的高级动态语言。目前最新版本是3.9。Python开源免费,拥有非常活跃的科学计算社区生态,远比R语言社区活跃。根据Tiobe发布的编程语言排行榜,Python已经跃升至第三位,而R语言排在第九位,如图2.2所示。与专注于科学计算的MATLAB、R和Julia不同,Python在Web应用开发领域也备受追捧。基于Python编写的Django、Flask等Web框架已经广泛应用于软件开发领域。从本课题的研究成果易于转化为具体的数据分析解决方案的角度来看,选择Python作为本课题的编程语言显然比其他语言更有优势。一致的语言特性可以显着降低未来结果转化中的学习成本,因此本课题选择Python3.8.2作为统计模型构建和分析的编程语言。图2.2Tiobe编程语言排行榜历史数据2.1.2开发平台对比PyCharm简介[17]:Pycharm是JetBrains打造的Python集成开发环境,具有调试、语法高亮、项目管理、代码跳转、智能提示等功能,自动补全、单元测试、版本控制等强大功能。PyCharm分为社区开源版和专业版。专业版提供Web开发、数据库连接等功能,支持Django、Flask等框架。VisualStudioCode简介[18]:VisualStudioCode是微软推出的一款轻量级编辑器,其软件架构为平台加插件的模式。加载Python插件后,VisualStudioCode算得上是一款非常不错的小型PythonIDE,但在完备性上相比PyCharm还有不少距离。但鉴于其完全开源免费的特点,粉丝众多,社区参与非常活跃。Spyder[19]介绍:一个用于Python语言的开源科学计算IDE(IntegratedDevelopmentEnvironment)。其设计思想与MATLAB类似,模仿MATLAB的“工作区”功能,方便观察和修改数组值。它集成了Numpy、SciPy、Matplotlib等科学计算软件包,内置了处理数据的交互环境。它对数据科学家非常友好,包含在Python的科学计算发行版Anaconda中。该项目的目标是促进使用Python进行科学和工程领域的软件开发。JupyterNotebook简介:一个基于Web的交互式计算环境,用于创建JupyterNotebook文档。与Spyder整个Python文件运行后生成交互式页面式交互风格不同,JupyterNotebook的交互是基于Python代码块的,这意味着用户可以根据自己的意愿选择性地运行某些代码块并得到结果,与Spyder相比具有更大的灵活性。与Spyder一样,JupyterNotebook也包含在Python的科学计算发行版Anaconda中。2.1.3数据库技术比较MySQL[20]数据库介绍:一种高性能、低成本、可靠且非常流行的开源数据库,已有20多年的历史,是目前最好的关系型数据库管理系统之一其中广泛应用于互联网上的中小型网站。随着MySQL的不断成熟,它正逐渐被用于更多的大型网站和应用。MySQL目前归Oracle所有,其数据库查询语言为SQL。MongoDB[21]数据库介绍:一个面向文档的数据库管理系统,定义为非关系型数据库,致力于为Web应用提供可伸缩的高性能数据存储解决方案。与MYSQL中的表不同,它支持的查询文档的数据结构非常松散,是类似JSON的BSON格式,可以存储更复杂的数据类型。MongoDB的特点是强大的查询语言。它的语法遵循面向对象的思想,可以实现大部分类似于关系型数据库中单表查询的功能,还可以对数据进行索引。上面提到的技术栈只是针对中小型数据集。对于大规模或者超大规模的数据集,还需要一些额外的大数据技术栈,比如ApacheHadoop、ApacheHive和ApacheSpark等,还请具体情况具体分析。参考文献[5]MATLAB[EB/OL]。https://www.mathworks.com/products/matlab.html,2020.05.11.[6]R[EB/OL]。https://www.r-project.org/about.html,2020.05.11。[7]朱莉娅[EB/OL]。https://julialang.org/,2020.05.11.[10]蟒蛇[EB/OL].https://www.anaconda.com/,2020.05.11.[11]Jupyter笔记本[EB/OL].https://jupyter.org/,2020.05.11.[12]克里斯蒂安山。用Python学习科学编程[M].剑桥大学出版社,2015:160-317.[13](美国)霍莉摩尔。MATLAB实战教程(第二版)[M].-2.[14]王树义。学习Python能提高竞争力吗?[EB/OL]。https://www.jianshu.com/p/4445fe0a7e16,2020.05.11.[15](美国)马特洛夫(马特洛夫,北卡罗来纳州)。R语言程序设计艺术[M].陈延平,邱以轩,潘兰峰等译,北京:机械工业出版社,2013.6:1-2.[16]魏坤主编。Julia语言程序设计[M].北京:机械工业出版社,2018.10:1-2.[17]PyCharm[EB/OL].https://www.jetbrains.com/pycharm/,2020.05.11。[18]VisualStudioCode[EB/OL].https://code.visualstudio.com/,2020.05.11.[19]蜘蛛[EB/OL].https://www.spyder-ide.org/,2020.05.11.[20]MySQL[EB/OL].https:///www.mysql.com,2020.05.11.[21]MongoDB[EB/OL].https://www.mongodb.com/,2020.05.11。指出~)