数学地质尽管是地学类专业的一门选修课程,但也是一门重要的课程。选修该课程可以增强学生用数学思维解决地质问题的能力。Python语言是目前用于科学计算与可视化最广泛的编程语言。因此把Python语言结合数学地质教学,可以丰富数学地质的教学内容,也有助于学生对数学地质算法的理解,同时可以提高学生的学习兴趣。本文简要介绍了Python语言的特点、国内外高校地学类专业开设Python语言用于地学数据处理与分析与处理的相关课程,并结合作者在数学地质教学中引入Python语言的情况,探索了Python语言在数学地质教学中的应用。 Mathematical geology is an elective but very important course for most of Geoscience majors in China. The goal of the course is to improve the ability of students to use mathematical thinking in solving geological problems. Python is one of the most widely used programming languages for scientific computing and visualization. Therefore, the combination of Python and mathematical geology teaching can enrich the content of the subject, help students better understand the mathematical geology algorithm, and improve their interest in learning the subject. The key features of Python are briefly described in the paper, and some similar courses in foreign universities that use Python for geoscience data processing are presented. Finally, the practical application of Python in mathematical geology teaching is introduced.
数学地质尽管是地学类专业的一门选修课程,但也是一门重要的课程。选修该课程可以增强学生用数学思维解决地质问题的能力。Python语言是目前用于科学计算与可视化最广泛的编程语言。因此把Python语言结合数学地质教学,可以丰富数学地质的教学内容,也有助于学生对数学地质算法的理解,同时可以提高学生的学习兴趣。本文简要介绍了Python语言的特点、国内外高校地学类专业开设Python语言用于地学数据处理与分析与处理的相关课程,并结合作者在数学地质教学中引入Python语言的情况,探索了Python语言在数学地质教学中的应用。
Python,数学地质,教学
Ziyong Zhou, Li Li
College of Geosciences, China University of Petroleum (Beijing), Beijing
Received: Nov. 16th, 2020; accepted: Nov. 27th, 2020; published: Dec. 4th, 2020
Mathematical geology is an elective but very important course for most of Geoscience majors in China. The goal of the course is to improve the ability of students to use mathematical thinking in solving geological problems. Python is one of the most widely used programming languages for scientific computing and visualization. Therefore, the combination of Python and mathematical geology teaching can enrich the content of the subject, help students better understand the mathematical geology algorithm, and improve their interest in learning the subject. The key features of Python are briefly described in the paper, and some similar courses in foreign universities that use Python for geoscience data processing are presented. Finally, the practical application of Python in mathematical geology teaching is introduced.
Keywords:Python, Mathematical Geology, Teaching
Copyright © 2020 by author(s) and Hans Publishers Inc.
This work is licensed under the Creative Commons Attribution International License (CC BY 4.0).
http://creativecommons.org/licenses/by/4.0/
数学地质(数学地球科学(mathematical geoscience))作为面向地学类专业学生开设的一门选修课,对于提高大学生数学素养、认识数学的重要性以及在地学数据的定量化研究方面都有重要意义 [
为了克服学生对数学地质的畏难情绪,增强对基本概念的理解,在数学地质教学过程中,需要采用一些新的教学环节。其中的两个重要环节是实践教学和计算过程和结果的可视化。
实践教学环节主要是运用常用的多元统计软件对实际数据进行处理和分析。运用不同的算法对实际数据进行处理,不但可以让学生进一步理解各种算法的原理,同时也掌握常用的多元统计软件的使用方法,增加学生对数学地质的兴趣。对于数学地质课程中涉及的多元统计方法,Excel + SPSS或Excel + Minitab基本可以满足实验课的教学需求。Excel软件提供了非常丰富的函数库,对于一些简单的运算,如均值、方差、距离计算、相关系数与相关系数矩阵、协方差与协方差矩阵、简单的方差分析、一元与多元回归分析、随机数的产生等都可以实现,结合函数的嵌套功能,可以完成一些比较复杂的公式运算。而且Excel还提供了丰富的绘图功能,加上Excel应用广泛,基于Excel进行数据处理、分析与可视化是大学生必须掌握的一项基本技能。SPSS和Minitab是常用的统计分析软件。SPSS和Minitab 界面与Excel相似,操作也比较简单,同时功能比较强大,除一般的数据预处理功能外,两类软件都提供了常用的多元统计方法,包括回归与逐步回归分析、层次聚类与K-means聚类、判别与逐步判别分析、主成分分析和因子分析等。但是这两种软件总的来说,图形功能较弱,除通用的多元统计方法外,一些新的机器学习方法没有提供。而且这两个软件都是商业软件,涉及版权问题。
计算过程的可视化,则是把不同算法的计算过程和结果进行可视化表达,从而可以更直观的展示算法的特征和计算过程,加强对算法的理解。这方面,Excel、SPSS、Minitab难以满足要求,需要新的工具来补充。而Python语言则是比较适合的选择。
把Python语言引入数学地质教学中,有很多的优势。首先Python是开源、跨平台语言,而且函数库非常丰富;其次,随着Python语言的广泛应用,Python用于地学数据数据分析已经越来越广泛 [
相对于Matlab在数字信号处理、高等数学、线性代数教学过程中的广泛应用,Python应用于辅助教学还比较少。
Python语言的出现要追朔到上世纪80年代,1989年开始启用。目前已经发展到3.7版。
表1为TIOBE统计的近20年来几种语言的排名情况。由表1可知,Python开始启用5年后,其用户使用量已经排名到了20位,从本世纪初开始,其排名一直上升,进入编程语言的前10位。到2019年,更是超过C++,上升到第3位,其优势自不待言。而且在2007年、2010年以及2018年3次成为年度语言(Hall of Fame)。
编程语言 | 年度平均排名 | ||||||
---|---|---|---|---|---|---|---|
2019年 | 2014年 | 2009年 | 2004年 | 1999年 | 1994年 | 1989年 | |
Java | 1 | 2 | 1 | 1 | 3 | - | - |
C | 2 | 1 | 2 | 2 | 1 | 1 | 1 |
C++ | 4 | 4 | 3 | 3 | 2 | 2 | 2 |
Python | 3 | 7 | 6 | 6 | 22 | 20 | - |
表1. Python语言近20年来年度排名情况(数据来源:www.tiobe.com)
之所以越来越多的用户选择Python 语言作为编程语言,主要有以下几方面的原因。
1) Python语言是开源语言,可以免费获取。同时也是跨平台语言。
2) 相对于在数值分析中广泛应用的Matlab语言,Python语言更紧凑,可读性更强。据统计,完成同一个任务,Python语言比Matlab语言代码要少10%~20%。
3) Python语言相对于许多其它编程语言,更容易学习和掌握。
4) Python语言有非常丰富的数值分析库、统计库和数据可视化库。
5) 作为开源语言,Python网络资源非常丰富,在线帮助文件也非常多。
基于以上原因,国内外很多地学科研机构及研究人员都首选Python作为软件开发平台或开发语言。如GEOS-Chem技术支持团队基于Python开发了GCPy工具,并替代以前基于IDL (Interactive Data Language)开发的应用GAMAP [
地学数据具有海量、非结构化以及空间位置的相关性、多尺度性等显著的特点。与传统多元统计方法中研究的数据特征有很大的区别。Python语言出现的时间并不长,广泛应用也是近10年才出现。由于Python语言在大数据处理、人工智能、网络数据获取等方面的广泛应用,为了适应Python快速发展的要求,很多高校或研究机构都开设了相关课程或速成班。国内有关Python教学的文章主要有两类,一类是Python本身的教学方法研究,另一类是Python辅助教学方法研究。图1是知网公开发表的论文中以 Python+教学作为关键词检索得到得的文章数。由图1可知,近3年相关文章快速增加。但是这些文章有关Python语言辅助地学类专业教学的论文鲜有报道。高校的课程设置方面,主要还是以Python语言编程方法为主。把Python语言用于辅助地学教学目前还报道得较少,用于辅助数学地质教学更是鲜有报道。
图1. 近10年知网发表的有关Python教学方面的文章数目
国外Pythony语言的应用比国内早。把Python用于地学数据分析也同样比较早。同时,为了满足地学数据大数据分析与人工智能处理的需要,国外许多高校的地学类专业纷纷开设Python地学数据分析方面的课程。表2列出了部分国外高校地学相关专业开设Python语言用于地学数据分析方面的课程。这些课程不是纯粹的Python语言编程课程,而是Python语言如何用于地学数据处理。部分课程名称尽管没有包含“Python”,但应用平台仍然是以Python为主。
序号 | 学校 | 课程名称 |
---|---|---|
1 | University de Montpellier | Introduction to basic data analysis and statistics in Earth sciences (using python 3) |
2 | University of Maryland | Python for Remote Sensing Applications in Earth Science |
3 | University of Edinburgh | Python for Earth Science Modelling |
4 | University of California San Diego | Python Programming for Earth Science Students |
5 | University of California San Diego | Introduction to Computational Earth Science |
6 | The University of Melbourne | Python for Earth Sciences |
7 | University of Colorado Boulder | Python Programming Tutorials for Earth Data Science |
8 | University of Alberta | Python for geoscientists |
9 | The University of Iowa | Scientific Computing with Python |
---|---|---|
10 | Royal School of Mine, Imperial College | Introduction to programming for geoscientists |
11 | Rice University | Machine Learning in Geoscience |
12 | The University of Wyoming | Introduction to GeoModeling |
13 | Brown University | Mathematical and Computational Earth Sciences |
14 | University of Texas at Austin | Python for Geoscience Research |
15 | Columbia University | Research Computing in Earth Sciences |
16 | The University of Oklahoma | Machine Learning for Petroleum Engineers, Engineers and Geoscientists |
17 | Texas A&M University | Python for Geosciences |
18 | Utrecht University | Python in Earth Science |
表2. 国外地学类相关专业开设与Python语言相关课程情况
Python用于数学地质教学中,如何设计教学内容,是需要考虑的重点。首先,目的要明确。在数学地质教学中引入Python语言,其目的有两个,一是通过引入Python语言,让学生对Python语言有基本的了解,引起学生的兴趣。其次,对教学过程中涉及的算法及结果运用Python进行可视化,让学生直观的了解算法的实质,同时也激发学生学习Python的兴趣。其次分清主次。由于Python主要是用于辅助教学,Python语言应该是从属的,因此Python的编程方法不能作为主要内容。基于以上考虑,Python用于数学地质教学主要从以下几方面入手。
Python语言作为一门开源语言,有各种各样的安装包,让初学者难以选择,同时,学习运用Python语言,离不开代码编辑器或集成开发环境(IDE, Integrated Development Environment)。因此,首先需要给学生大致介绍Python语言的安装方法及IDE。根据作者Python编程体会,初学者采用Anaconda安装包是一种高效、快速的方法。关于Python的编程环境,目前到底有多少Python IDE,并没有一个明确的统计,而且新的IDE还在不断涌现。但最常用的IDE还是有共识的。据统计,目前最常用的Python开发环境主要有:Jupyter、PyCharm、Spyder、visual studio code、IDLE、Sublime Text等 [
丰富的开源函数库是Python的一大亮点,也是Python语言近年来快速成为重要的开发语言的一个主要原因。Python库包括两类:标准库和第三方库,两种库的调用方式是一样的。我们讲的Python语言丰富的函数库,实际暗指的就是第三方库,即非Python语言自带的库,需要下载安装方能使用。由于Anaconda安装包集成了多达1500个库,这些库包括了数学地质教学内容所涉及的所有函数,因此安装好Anaconda后,一般情况,不需要再安装其它库,这也是推荐学生采用Anaconda包的一个重要原因。尽管库非常多,但最常用,最重要,学生必须掌握的库主要有以下几个:Numpy、Scipy、Pandas、Matplotlib、Scikit-learn。其中Numpy、Scipy、Pandas为科学计算与数据分析软件包,Matplotlib为图形可视化包。Numpy、Scipy、Pandas、Matplotlib 4个函数库构成了Python科学计算与可视化的支柱。而Scikit-learn函数库则是建立在Numpy、Scipy、Matplotlib上的机器学习工具,提供了非常丰富的机器学习算法 [
结果的可视化,指的是运用Python编程展示一些无法或者难以通过Excel、SPSS、Minitab软件展示的图件。在教学过程中可视化的图件主要有以下几类:曲线的填充(如概率分布、假设检验拒绝域等图件中部分区域的填充)、散点图矩阵(多变量中两两变量散点图的矩阵排列)、相关系数热力图(图2)、不同线性判别函数对比、K-Means聚类过程(图3)、样本的高维映射(利用核函数把二维变量映射到三维特征空间)等。
图2. 相关系数矩阵热力图
图3. K-means聚类过程中聚类中心的变化
本文结合作者引入Python辅助数学地质教学的体会,作了简单的总结。由于是首次把Python语言用于数学地质教学,因此对于教学内容的设计以及教学过程的把控还存在不少问题,需要在以后的教学过程中不断完善。
周子勇,李 力. Python语言在数学地质课程教学中的应用 The Application of Python in the Teaching of Mathematical Geology[J]. 创新教育研究, 2020, 08(06): 884-890. https://doi.org/10.12677/CES.2020.86146