第 2 章 科学工作流和科学计算的结构

科学工作流(scientific workflow)表示为解决科学计算问题所需的一系列结构化活动和计算步骤。科
学计算涉及的计算都具有较高的强度和复杂度,还要处理复杂的依赖关系。本章其余部分会继续用科学计
算问题的术语表示科学工作流。现在来介绍大多数科学计算问题都需要的各种数学和计算概念。
这一章将介绍以下主题:
科学计算的数学部分
Python的科学计算程序库
NumPy简介
SciPy简介
pandas数据分析
IPython(Interactive Python)交互式编程
SymPy符号计算
matplotlib数据可视化
2.1 科学计算的数学部分
首先将简要介绍科学计算问题中可能出现的各种数学概念,还会介绍对应问题的解决方法。不过,这里不
会深入方法的细节。在后面的章节中,我们会详细介绍与这些概念相关的Python API。
2.1.1 线性方程组
在科学计算和应用数学中,最常见的数学概念就是线性代数方程组。通常,这类系统的出现都是由于线性
方程对非线性方程的近似,或代数方程对差分方程的近似。
线性方程组通常由一组联立线性方程构成,示例如下:


这个方程组由三个线性方程组成,带有三个未知变量:x1、x2和x3。该方程组的解就是同时满足三个方程
的三个变量的值。满足这个方程的解如下所示:


这个解同时满足三个方程。这正是我们把线性方程系统称为线性方程组的原因——整个方程组被看成一个
整体而非各个独立的方程。通常,使用迭代方法,通过重复的步骤对方程组进行求解。在程序中可以通过
一些循环结构实现迭代。另外也有非迭代方法,通过计算公式求解。线性方程组的求解方法很多,有迭代
方法和非迭代方法。例如,高斯LU矩阵分解法与高斯消元法是最常见的非迭代方法。雅可比迭代法和高斯
—赛德尔迭代法是常见的迭代方法。

2.1.2 非线性方程组
非线性方程组是指一组联立方程,其中未知变量的阶数大于1。这个系统可以是一维,也可以是多维。一
般情况下,非线性方程可以表述为以下形式。对于方程 f,x 需要满足以下条件:

x 的值被称为方程的根(root)或零值(zero)。

非线性方程按照维度分为两种,如下所示。带一个自变量的一维非线性方程如下所示:

方程的解是满足条件f (x) = 0的标量(scalar)x。另一种非线性方程是带有 n 个自变量的非线性方程
组:

方程组的解是同时满足所方程f (x) = 0的矢量(vector)x。
例如,一个一维非线性方程如下:

方程的带两位有效数字的近似解为0.36。一个多维非线性方程组如下:

方程组的矢量解为[1, 2]和[-2, -1]。
非线性方程和非线性方程组的解法很多。一维非线性方程的解法有:
二分法(bisection method)
牛顿法(Newton's method)
割线法(secant method)
插值法(interpolation method)
逆插值法(inverse interpolation method)
逆二次插值法(inverse quadratic interpolation,IQI)
线性分式插值法(linear fractional interpolation)
非线性方程组的解法有:
牛顿法
割线法(secant updating method)
阻尼牛顿法(damped Newton's method)
Broyden法
由于这些方法都是迭代法,所以收敛的速度至关重要。所谓收敛,是指这些方法一开始用近似解,通过不
断迭代得到精确解。朝一个解收敛的速度称为收敛速度。收敛速度越快,则获得精确解需要消耗的时间越少。对于一些收敛速度较快的方法,比如牛顿法,初始值的选择至关重要。有些方法可能会因为初始值选
择不合适,导致无法收敛。有一些均衡的方法是收敛速度和解的精确程度的折中算法。阻尼牛顿法就属于
这类方法。SciPy软件包里面实现了大量的算法来解非线性方程组。可以参考
http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.optimize.newton.html,获取
牛顿—拉弗森方法(Newton-Raphson method,即牛顿法)的用法和实现代码。
2.1.3 最优化方法
最优化(optimization)是获取最优可行解的过程。通常,模型的可行解都有一个取值范围,有最大值或
最小值。假如我们要估算一个新项目的造价,那么最优解一定会取最小值。假如要评估不同销售策略的利
润率,那么最优解一定是利润率最高的销售策略。SciPy有一个优化技术软件包,具体内容可以参考
http://docs.scipy.org/doc/scipy/reference/optimize.html。最优化方法在科学与工程领域应用普
遍。具体应用场景如下:
工程力学
经济学
运筹学
控制工程
石油工程
分子建模
2.1.4 内插法
在科学与工程领域中,人们经常通过抽样或实验获取大量数据。这些数据点可以看成某个函数一些自变量
位置上的值。人们通常需要估计这个函数在样本范围内的某个位置上的值。估计的过程称为内插法
(interpolation)。通常借助曲线拟合与回归分析方法求解。
例如,自变量 x 和因变量f (x)对应的数值如下。

通过内插法就可以估计自变量在其他位置的函数值,例如x=7.5或x=5.25,即f(7.5)或f(5.25)。虽然这组
样本的函数非常简单(f=3x2),但它也可能源自某个真实案例。例如,这组数据可能是某家电商企业的
网络中心机房的温度。这些温度是在不同的时间点测量的。两次测量之间的时间间隔,既可能是固定不变
的,也可能是完全随机的。这个例子中,函数值就变成了不同时间点测量的机房的温度。我们需要估计或
者插值计算这一天剩余时间机房的温度。
这组数据的另一个场景可能是,对某个年龄段的用户每天花在Facebook或WhatsApp上的小时数的数量统
计。通过这些数据,就可以估计各个年龄段的用户每天花在Facebook或WhatsApp上的时间。
2.1.5 外插法
另一种类似的方法是外插法(extrapolation)。通过它的名称可知,这个方法是要估计函数在样本范围
之外的值。例如,假设我们已经获得了12岁到65岁各个年龄段的用户每天花费在Facebook或WhatsApp上的
小时数。那么估计12岁以下和65岁以上的用户每天花在Facebook或WhatsApp上的小时数就属于外插法的范
围了。这是因为自变量的范围已经超出了已知的样本范围。

有许多方法可以解决内插和外插问题。内插法如下所示:
分段常数内插法(piecewise constant interpolation)
线性内插法(linear interpolation)
多项式内插法(polynomial interpolation)
样条内插法(spline interpolation)
基于高斯过程的内插法(interpolation via Gaussian processes)
外插法如下所示:
线性外插法(linear extrapolation)
多项式外插法(polynomial extrapolation)
锥外插法(conic extrapolation)
法国曲线外插法(French curve extrapolation)
2.1.6 数值积分
数值积分(numerical integration)是用数值分析技术求取积分近似值的过程。积分的数值计算过程称
为求积分(quadrature)。之所以要使用近似方法求积分,是因为有些函数不能通过解析方法求精确解。
即使公式存在,它也可能不是最有效的求积分方法。有时我们需要求一个函数的积分值,但只知道其中的
一些样本。使用数值积分的方法,就可以为函数的积分获得近似值。这个方法首先对一些已知点进行多项
式拟合(polynomial fitting),然后对逼近函数进行积分。在Python中,SciPy程序包提供了积分模
块。关于这个模块的具体方法和实现,请参考
http://docs.scipy.org/doc/scipy/reference/integrate.html。有许多方法可以解决数值积分问题,如
下 所示:
辛普森法则(Simpson's rule)
梯形法则(trapezoidal rule)
精炼梯形法则(refined trapezoidal rule)
高斯积分法则(Gaussian quadrature rule)
牛顿—柯特斯积分法则(Newton-Cotes quadrature rule)
高斯—勒让德积分法则(Gauss-Legendre integration)
2.1.7 数值微分
数值微分(numerical differentiation)是利用已知的函数值估计函数导数的过程。数值微分在许多领
域都有十分重要的作用。一般的使用场景是,我们没有得到函数的形式,只观察到函数的一些离散值。这
时,如果要估计导数,就要关注与函数的导数相关的数值变化情况。为了计算的快速和便利起见,人们往
往更喜欢用离散值估计函数的导数,而不是寻找精确解,因为它虽然存在,但是往往很难求解。微分方法
经常被用于解决最优化问题。机器学习技术也常常要用到数值微分方法。
一些数值微分方法如下所示:
有限差分近似法(finite difference approximation)
微分求积法(differential quadrature)

有限差分系数(finite difference coefficients)
插值微分法(differentiation by interpolation)
2.1.8 微分方程
微分方程(differential equation)是一种描述导数与其函数关系的数学方程式。如果函数是一个物理
量,那么导数就是这个物理量的变化率,微分方程就是这个物理量和其变化率的关系。受重力影响的自由
落体运动方程通常是用一组微分方程表示的。微分方程的应用范围很广,包括纯数学和应用数学、物理
学、工程和其他学科。这些学科都会涉及不同类型的微分方程。
微分方程主要用来对不同的物理、工艺和生物学过程建模。许多情况下,微分方程可能无法直接求解。因
此,通常都用数值方法求近似解。物理学的基本法则(如牛顿第二运动学定律和爱因斯坦场方程)和化学
的基本法则(如化学反应速率方程),都是通过微分方程得出的。微分方程也可以用于对复杂的生物学行
为(生物种群增长模型)和经济学行为(指数增长模型)建模。
微分方程可以分为两类:常微分方程(ordinary differential equations,ODE)和偏微分方程
(partial differential equations,PDE)。常微分方程是包含一个自变量的函数及其偏导数的微分方
程。偏微分方程是包含多个自变量的函数及其导数的微分方程。多自变量函数的偏导数就是函数对每一个
自变量的导数。关于SciPy的微分方程计算功能的详细介绍,可以参考
http://docs.scipy.org/doc/scipy-0.13.0/reference/generated/scipy.integrate.ode.html。
求导时可以把其他变量看成常量。——译者注
解常微分方程的方法如下:
欧拉方法(Euler's method)
泰勒级数法(Taylor series method)
龙格—库塔法(Runge-Kutta method)
四阶龙格—库塔法(Runge-Kutta fourth order formula)
预估—校正法(predictor-corrector method)
解偏微分方程的方法如下:
有限元法(finite element method)
有限差分法(finite difference method)
有限体积法(finite volume method)
1. 初始值问题
常微分方程的初始值是未知函数在定义域内的某个位置的值。例如dy/dx=f (x,y),其中y=y1,x=x1。
2. 边界值问题
边界值问题是指带约束的微分方程,方程的解必须能够同时满足微分方程的所有约束。这些约束称为边界
条件。
2.1.9 随机数生成器
在计算领域,随机数生成器是一种产生不包含任意模式的序列的算法或过程。之所以称为随机数,是因为
它们没有任何模式可循。产生的数字基本无法预测。生成随机数的程序与日俱增,也促进了随机数生成方法的发展。这项技术历史悠久,最早的掷骰子、抛硬币和抽扑克,都可以看成是随机数生成器。但是,这
些方法都只能产生有限的随机数。
随机数生成器的计算方法应用得十分普遍,例如统计抽样、赌博、随机生成的设计、科学与工程领域的计
算机仿真,以及需要不可预测结果的大量其他领域,如密码系统。
随机数生成器主要有两类,真随机数生成器和伪随机数生成器。真随机数生成器通过真实的物理过程生成
随机数,例如硬盘的实际读写时间。伪随机数生成器通过计算机算法生成随机数。还有一种随机数生成器
通过统计分布生成随机数,例如泊松分布、指数分布、正态分布、高斯分布等。
一些伪随机数生成器如下所示:
BBS随机数生成器(Blum Blum Shub)
Wichmann-Hill随机数生成器(Wichmann-Hill)
进位—互补—乘法随机数生成器(complementary-multiply-with-carry)
反向同余随机数生成器(inversive congruential generator)
ISAAC随机数生成器(ISAAC (cipher))
滞后斐波那契随机数生成器(lagged Fibonacci generator)
线性同余随机数生成器(linear congruential generator)
线性反馈移位寄存器(linear-feedback shift register)
最大周期(索菲·热尔曼质数)倒数随机数生成器(maximal periodic reciprocals)
梅森旋转随机数生成器(Mersenne twister)
进位相乘随机数生成器(multiply-with-carry)
Naor-Reingold伪随机数生成器(Naor-Reingold pseudo-random function)
Park-Miller随机数生成器(Park-Miller random number generator)
WELL伪随机数生成器(Well-equidistributed long-period linear)
2.2 Python科学计算
Python对科学计算的支持,是通过不同科学计算功能的程序包和API建立的。对于科学计算的每个方面,
我们都有大量的选择以及最佳的选择。Python科学计算各个方面的可选包如下所示。
画图:目前,最流行的二维图制作程序库是matplotlib。还有许多画图包,如Visvis、Plotly、
HippoDraw、Chaco、MayaVI、Biggles、Pychart、Bokeh。还有一些画图程序包是在matplotlib的基
础上改进功能,如Seaborn和Prettyplotlib。
最优化:SciPy程序包里有最优化模块。OpenOpt和CVXOpt同样具有最优化功能。
高级数据分析:Python可以通过RPy或R/S-Plus接口与R语言配合使用,实现高级的数据分析功能。
Python自己的高级数据分析工具就是大名鼎鼎的pandas了。
数据库:PyTables是一种用于管理分层数据库的工具。这个软件包是以HDF5数据库为基础建立的,用
于处理较大的数据集。
交互式命令行:IPython是Python的交互式编程工具。

符号计算:Python具有符号计算功能的程序包有SymPy和PyDSTool。本章后面会介绍符号计算方法。
专用扩展包:SciKits程序库为SciPy、NumPy和Python提供了专业化的扩展。SciKits的一些软件包如
下。
scikit-aero:Python航空工程计算程序包。
scikit-bio:提供生物信息学领域的数据结构、算法和教育资源程序包。
scikit-commpy:Python数字通信算法程序包。
scikit-image:SciPy图像处理程序包。
scikit-learn:Python机器学习和数据挖掘程序包。
scikit-monaco:Python蒙特卡罗算法程序包。
scikit-spectra:建立在Python pandas上的光谱学程序包。
scikit-tensor:Python多线性代数和张量分解(tensor factorizations)程序包。
scikit-tracker:细胞生物学的目标检测和跟踪程序包。
scikit-xray:X射线科学的数据分析工具。
bvp_solver:Python求解两点边界问题的程序包。
datasmooth:SciKits提供的数据平滑程序包。
optimization:Python数值优化程序包。
statsmodels:SciPy统计学计算与建模程序包。
第三方/非SciKits的软件包/应用/工具:还有许多软件包/工具应用于不同的科学领域,例如天文
学、天体物理学、生物信息学、地球科学等。一些科学领域专用的Python程序包和工具如下。
Astropy:社区主导的用于支持天文学和天体物理学计算的Python程序包。
Astroquery:这个程序包是一组用于访问在线天文数据的工具。
BioPython:这个程序包是用Python进行生物计算的工具包。
HTSeq:这是用Python进行高通量测序数据(high-throughput sequencing data)分析的程序
包。
Pygr:这是Python中基因测序和对比分析的工具包。
TAMO:这是Python中利用DNA序列基元进行转录调控分析的应用。
EarthPy:这是地球科学领域的IPython Notebook案例集合。
Pyearthquake:进行地震与MODIS(中分辨率成像光谱仪)数据分析的Python程序包。
MSNoise:这是一种使用环境地震噪声监测地震波速度变化的Python程序包。
AtmosphericChemistry:对大气化学运作方式进行探测、构造与转换的工具。
Chemlab:这是一个能够进行化学相关计算的程序库。

2.2.1 NumPy简介
Python经过扩展可以支持数组和矩阵类型,并且具有大量的函数,可以计算这些数组和矩阵。这些数组是
多维的,而这个扩展程序包就是NumPy。NumPy的基本功能实现之后,许多API/工具都在它的基础上建立,
包括matplotlib、pandas、SciPy和SymPy。下面来看看基于NumPy建立的那些工具和API。
2.2.2 SciPy程序库
SciPy是一个为科学家和工程师开发的Python程序库,用来完成科学计算相关的功能。它有许多功能,如
最优化方法、线性代数、积分、插值方法、图像处理、快速傅里叶变换、信号处理以及一些特殊函数。它
可以解常微分方程以及其他科学与工程问题。它建立在NumPy数组对象的基础上,是NumPy技术栈的重要成
员之一。因此,有时NumPy技术栈和SciPy技术栈可以看成是同一个技术栈。
SciPy子程序包
SciPy包括以下子程序包。
constants:物理常数和转换因子。
cluster:层次聚类、矢量量化和K-means聚类。
fftpack:离散傅里叶变换算法。
integrate:数值积分程序。
interpolate:插值工具。
io:数据输入输出。
lib:Python外部库包装器。
linalg:线性代数程序。
misc:附件(例如图像读写操作)。
ndimage:多维图像处理的各种功能。
optimize:优化算法,包括线性规划。
signal:信号处理工具。
sparse:稀疏矩阵及其相关算法。
spatial:KD树、RNN(最近邻搜索)算法、距离函数。
special:特殊函数。
stats:统计学函数。
weave:可以把C/C++代码写成Python多行字符串执行的工具。
2.2.3 用pandas做数据分析
pandas是一个开源的Python程序库,能够进行高性能的数据处理与分析。使用pandas,用户可以在Python
中实现完整的数据分析工作流。而且将pandas、IPython工具包和其他Python程序库组合起来,可以获得
非常好的数据分析性能和效率。但是pandas数学功能不足,目前只支持一些简单的回归方法。但是,我们
可以从statsmodels和scikit-learn里找到其他功能。pandas可以非常高效地连接与合并数据集,支持丰
富的输入输出文件格式,包括直接内存读写、CSV、纯文本、Excel、SQL数据库和HDF5格式。

2.3 IPython交互式编程简介
IPython可以让Python支持多种语言的交互式编程。IPython原本是一个专为Python编程设计的命令行工
具,现在可以支持多种编程语言。IPython具有非常强大的代码自省功能、新的shell语法、命令自动补
全、命令历史保存等功能。自省功能是指命令行环境识别不同文字含义(属性、方法以及其他具体细节,
例如超类)的一种能力。IPython的一些特性如下所示。
支持系统命令行shell和QT版命令行shell。
支持浏览器版本的Notebook,可以编写代码、数学公式,以及支持多媒体和图表格式。
支持交互式数据可视化与其他图形用户界面。
支持高性能的并行计算。
2.3.1 IPython并行计算
IPython对并行与分布式计算的支持非常好,可以满足大规模计算需求。IPython还具有开发、执行、调试
和监控并行与分布式计算的能力。IPython支持多种并行方式,如下所示,还支持不同并行方式的混合形
式。
单程序多数据(single program multiple data,SPMD)并行
多程序多数据(multiple program multiple data,MIMD)并行
消息传递接口(Message Passing Interface,MPI)
任务与数据并行
用户自定义方法
2.3.2 IPython Notebook
IPython Notebook是基于网络的交互式编程环境。通过这个环境可以创建IPython Notebook。它可以识别
单个用户输入的文字或代码表达式,运行它们,然后把结果返回给用户。这种功能被称为读取—求值—
输出循环(read, evaluate, print, and looping,REPL)。在IPython Notebook里,用户还可以使用下
面的程序库:
IPython
ØMQ(ZMQ)
Tornado(网络服务器)
jQuery
Bootstrap(前端框架)
MathJax
运行Notebook程序,会在电脑上创建一个局域网服务器,用浏览器就可以打开。IPython Notebook是JSON
格式的文档,可以用代码、普通文字、数学运算、图像和图表等形式完成不同类型的计算。IPython
Notebook也可以通过网页操作或命令行代码转换成不同的格式,目前支持HTML、LaTeX、PDF、Python等多
种格式。

IPython Notebook的程序开发过程如下图所示。首先准备数据,如下图左边所示,然后开发程序并管理版
本。程序开发完毕后,还可以导出为不同格式。

IPython还有一些非常给力的特性。
可以与GUI程序库和工具箱实现无缝衔接。IPython可以和许多Python版的GUI工具箱/程序库无缝衔
接,如Tkinter、PyGTK、PyQt和wxPython。
集群管理:IPython可以通过MPI/异步状态回调信息对集群计算进行管理。
类UNIX运行环境:IPython的默认功能与UNIX命令行环境类似,支持客户自定义。

下载源代码
可以从网站http://www.packtpub.com登录你的账户,下载从Packt出版社购买的所有图书的源代码。
如果是通过其他途径购买的Packt图书,可以访问http://www.packtpub.com/support,注册一个账
户,源代码会发到你的邮箱。
IPython用户界面的截图如下页所示(源自http://ipython.org/notebook.html)。

IPython命令行工具的特性有以下各点。
Tab键自动补全:用户不需要在IPython输入全部代码。只要敲入前面一部分,再按Tab键,IPython
就会把剩下的命令自动补全。
浏览对象结构:对象的各种属性都可以通过IPython命令行的自省功能进行检查。
魔法函数:有许多魔法函数可供用户使用。
运行与编辑代码:IPython命令行可以运行并编辑Python脚本。
调试:IPython命令行具有十分强大的调试功能。
历史信息:IPython命令行可以存储历史命令和运行结果。
系统命令:用户还可以使用系统命令。
自定义系统命令别名:用户可以根据自己的需要为系统命令定义别名。
配置文件:IPython环境可以用配置文件进行自定义。
启动文件:用户可以设置IPython会话启动时运行的命令和代码。

IPython Notebook的用户操作界面
2.4 用SymPy进行符号计算
符号计算主要是操作数学对象与表达式。这些数学对象与表达式可以直接表现自己,它们不是估计/近似
值。表达式/对象是未经估计的变量,以符合形式呈现。
我们用下面的图来对比普通计算与计算机符号计算的差异。每种计算形式有两个例子。示例A1与示例A2是
普通计算示例,示例B1与示例B2是符号计算示例。示例A1与示例A2都有明确的输出结果。让我们再看看示
例B1与示例B2的输出结果。示例B1的输出结果是sqrt(3),没有进行数值估计,只是用符号表示。这是
因为在符号计算中,如果sqrt函数的参数不是一个能够开尽的数,那么它就直接用符号表示结果。另一
方面,在示例B2中,输出结果更加简单。这是因为在这个示例中,表达式是可以进一步简化的;
sqrt(27)可以写成sqrt (9 × 3)或3(sqrt(3),因此可以简化成3sqrt(3)。

普通计算与符号计算的对比
 

2.4.1 SymPy的主要特点
SymPy是一个符号计算程序库,具有各种类型的符号计算能力。它可以简化数学表达式(就像前面看到的
sqrt(27)),计算微分、积分与极限,求方程的解、矩阵运算以及各种数学函数。所有这些功能都通过
数学符号完成。
下面介绍SymPy的主要特点。SymPy程序库由若干核心能力与大量的可选模块构成。SymPy的主要功能如下
所示。
核心能力包括基本算术与公式简化,以及模式匹配函数,如三角函数、双曲函数、指数函数与对数函
数等。
支持多项式运算,例如基本算术、因式分解以及各种其他运算。
微积分功能,包括极限、微分与积分等。
各种类型方程式的求解,例如多项式求解、方程组求解、微分方程求解。
离散数学。
矩阵表示与运算功能。
几何函数。
借助pyglet外部模块画图。
物理学支持。
统计学运算,包括概率与分布函数。
各种打印功能。
多种编程语言与LaTeX代码生成功能。

2.4.2 为什么用SymPy
SymPy是一个开源的程序库,采用自由的BSD许可证。用户可以自由调整源代码。这在其他软件中都不能实
现,例如Maple和Mathematica。SymPy的另一个优势是,其设计、开发与执行都是在Python中。对Python
开发者来说,这是一个额外的优势。与其他工具相比,这个程序库具有高度的扩展性。
2.5 画图程序库
Python的话题程序库是matplotlib。它提供了一个面向对象的API,让用户可以在用各种Python的GUI工具
箱开发的应用程序中增加图表。SciPy/NumPy都使用matplotlib绘制数组的二维图。matplotlib的设计理
念是简化画图功能,用户调用极少的函数就能轻松地创建各种图形,有时甚至只需要调用一个函数。还有
一些专业的工具箱/API扩展了matplotlib的功能。这些工具中,有些是与matplotlib绑定在一起的,有些
需要单独下载。matplotlib的部分扩展API如下。
Basemap,绘制地图的工具箱。
Cartopy程序包,让地图数据分析与可视化更加简单。
Excel工具,可以让matplotlib与Excel进行数据交互。

Qt与GTK+开发接口。
mplot3d,可以绘制三维图。
下面的图表中演示了用matplotlib绘制的不同图形。这些截图都源自matplotlib网站
(http://matplotlib.org/users/screenshots.html)。

2.6 小结
这一章介绍了数学与数值分析的许多概念,包括线性与非线性方程组、最优化方法、内插法、外插法、数
值微分与积分、微分方程与随机数生成器。
本章的第二部分简要介绍了用Python语言进行科学计算的程序包/工具箱/API,还介绍了NumPy、SciPy、
IPython、SymPy、matplotlib和pandas的功能与特性。
下一章将介绍如何为科学计算准备数据与管理数据。

  • 23
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

___Y1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值