本章节仅是一个开胃菜,向用户展示 Python 接口提供的很小的一部分功能,用户可以自行探索各种功能。
#!/usr/bin/env python
import sys
# This is a comment
def say_hello(name):
print(“Hello "+ name + "!" )
if len(sys.argv) > 1 : name = sys.argv[1]
else:
name = “World"
say_hello(name)
加载需要的模块。
使用缩进定义不同的程序块。而不是 ;
或 {}
或 END
。
使用 def
定义函数。
动态变量类型。
处理字符串十分方便。
使用 python
运行,或定义 shebang 并配置权限后直接运行。
$> python example.py
hello World!
$> ./example.py Xavi
hello Xavi!
列表类似于 c 语言中的数组,但同一个列表中可以保存不同类型的数据。
$> python
>>> mylist = ['a','b','c'] >>> print(mylist)
['a', 'b', 'c']
>>> mylist[2:]
['c']
>>> mylist[-1]
'c'
>>> for element in mylist: ... print(element) ...
a
b
c
字典相当于 c++ 中的 std::map
,可以保存不同种类的数据。
>>> mydict = {'key1':1,'key2':2,'key3':3} >>> for key,value in mydict.items():
... print(key + ":" + str(value)) ...
key3:3
key2:2
key1:1
>>> 'key1' in mydict
True
>>> 'key5' in mydict
False
>>> len(mydict)
3
>>> mydict.keys() ['key3', 'key2', 'key1'] >>> mydict.values()
[3, 2, 1]
NumPy 是 Python 科学计算的基础包。提供对多维数组的支持。 同时提供大量对数据进行快速操作的函数,性能与 C 和 Fortran 相当。
越来越多基于 Python 的数据和科学库使用 NumPy。
NumPy 的核心是 ndarray 对象,一个 n 维同构数组。
>>> from numpyimport *
>>> a = arange(15).reshape(3, 5)
>>> a
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
>>> a.shape
(3, 5)
>>> a.ndim
2
>>> a.size
15
>>> b = array([6, 7, 8])
>>> b
array([6, 7, 8])
>>> a.sum()
105
>>> a.min()
0
>>> a.max()
14
>>> a.mean()
7.0
>>> b*2
array([12, 14, 16])
>>> b-b
array([0, 0, 0])
>>> b*b
array([36, 49, 64])
了解NumPy提供哪些函数非常困难。
http://docs.scipy.org/doc/numpy/reference/
数据的操作包括:
Python 和 NumPy 扩展的绘图库。
原生模拟 Matlib 的绘图命令,但独立实现。
重度依赖 NumPy。
设计哲学:
支持 2 维和 3 维图形。
底图模块:projections,coastlines,political boundaries
import numpy as np
import matplotlib
# or use
# echo "backend: TkAgg" >> ~/.matplotlib/matplotlibrc
matplotlib.use("TkAgg")
import matplotlib.pyplot as plt
# evenly sampled time at 200ms intervals
t = np.arange(0., 5., 0.2)
# red dashes, blue squares and green triangles
plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^')
plt.show()
绘制结果如图所示
import numpy as np
import matplotlib
# or use
# echo "backend: TkAgg" >> ~/.matplotlib/matplotlibrc
matplotlib.use("TkAgg")
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
# make sure the value of resolution is a lowercase L,
# for 'low', not a numeral 1
map = Basemap(projection='ortho', lat_0=50, lon_0=-100,
resolution='l', area_thresh=1000.0)
map.drawcoastlines()
map.drawcountries()
map.fillcontinents(color='coral')
map.drawmapboundary()
map.drawmeridians(np.arange(0, 360, 30))
map.drawparallels(np.arange(-90, 90, 30))
plt.show()
科学算法和数学工具的开源库,依赖 NumPy。提供 NumPy 很多函数的增强版本。
因为计算由 C 扩展模块实现,所以速度非常快。
提供一套精心挑选的高层科学和工程模块:
交互的增强型 python 控制台
服务器/客户端网页 Notebooks。
基于 Python 的开源软件生态系统,用于数学、科学和工程。
依赖下面的 Python 库:
目前有两个 ECMWF 的库有 Python 接口:
ecCharts
新的网页图形(ecCodes,magics++)
检验(ecCodes,magics++)
EcFlow(SMS 的替代品):服务器配置和客户端通讯
Copernicus 项目(ecCodes)
EFAS(European Fload Alert System)(EcFlow)
科研
计划开发下一代插值库的 Python 接口。
ECMWF 开发的气象绘图软件,已在 ECMWF 和成员国使用超过 25 年。
支持等值线、风场、观测、卫星图像、符号、文字、坐标轴和图像的绘制。
两种绘制方式:
生成的气象图形可以保存成多种格式,例如 PS,EPS,PDF,GIF,PNG,KML 和 SVG。
提供过程式接口和高层 Python 编程接口。