Python_入门
Python 科学计算入门 内容总纲 Python介绍 Python开发环境 Python基本语法 Python数据类型 Python程序组织 Python程序执行 Python的numpy库 Python介绍 什么是Python? Python介绍 什么是Python , 是一种面向对象、解释型计算机程序设计语言 ,于1989年底发明,第一个公开发行版发行于 1991年。Python语法简洁而清晰,具有丰富和 强大的类库。它常被昵称为胶水语言,它能够 把用其他语言制作的各种模块(尤其是C/C+) 很轻松地联结在一起。常见的一种应用情形是 ,使用Python快速生成程序的原型(有时甚至 是程序的最终界面),然后对其中有特别要求 的部分,用更合适的语言改写 Python介绍 动态脚本语言 解析执行 跨平台 优点: 简单易学 开发速度快 拥有众多的库 缺点: 速度相对编译性语言慢 Python开发环境 安装Python Python 2.7 (http:/www.pytyon.org/ftp/) WinPython (http:/ Python开发环境 Python命令行 Python开发环境 WinPython界面 Python基本语法 变量声明 函数声明 缩进格式 程序注释 Python基本语法 声明变量 提示: 变量名为字母、下划线等字符 无需声明变量类型 直接赋值使用 Python基本语法 声明函数 提示: def 关键字 冒号结尾 缩进 Python基本语法 缩进格式 提示 缩进代替括号 缩进可以是tab或者空格 一般使用4个空格 Python基本语法 程序注释 提示 #开始至一行结束 函数或者类开始的字符串 Python数据类型 字典Dictionary 存储key-value对,value可以是任意类型 列表List 类似数组 元组Tuple 类似List,但是元素不可修改 字符串 自定义数据类型 Python数据类型 Dictionary的使用 提示 键和键值可以为多种数据类型 d = host:166.111.8.28, port:1234 d host:166.111.8.28, port:1234 dhost 166.111.8.28 dport 1234 dhello Traceback (innermost last): File , line 1 in ? KeyError: hello Python数据类型 Dictionary的修改 提示: 键值不会重复 对已有键值赋值会导致原值被覆盖 键值大小写敏感,请注意 d host:166.111.8.28, port:1234 dhost = 59.66.130.77 d host:59.66.130.77, port:1234 dport = 330 d host:59.66.130.77, port:330 Python数据类型 Dictionary 删除 提示: 删除不存在的键值会导致异常 d host: 59.66.130.77 , port:1234 del dport d host:59.66.130.77 dport = 330 d host:59.66.130.77, port:330 Python数据类型 List数据类型 提示: 负数下标的使用 元素可以为任意类型 li = a, b, c li a,b,c li0 a li2 c li-1 c li-2 b Python数据类型 List元素添加 提示: append是添加,extend是扩展 li = a, b, c li.append(e,f) li a,b,c,e,f li.extend(e,f) li a,b,c,d,e,f,e,f li.insert(1, k) li a,k,b,c,d,e,f,e,f Python数据类型 List元素删除 提示: 删除不存在的元素会引发异常 POP操作会返回当前list末尾的元素,并且删除该元素 li = a, b, c li.remove(a) li b,c li.pop() c li.remove(e,f) Traceback (innermost last): File “”, line 1 in ? ValueError: list.index(x): e,f not in list Python数据类型 List分片 提示: :作为分片下标分割符 第一个下标表示第一个选取的下标,第二个表示最后一个不选取 的下标 li = a, b, c, d, e, f li1:3 b,c li:3 a,b,c li2: c,d,e,f li2:-1 c,d,e li2:0 Python数据类型 List元素搜索 提示: 查找不存在的值会导致异常 li = a, b, c li.index(a) 0 b in li True li.index(e,f) Traceback (innermost last): File “”, line 1 in ? ValueError: list.index(x): e,f not in list Python数据类型 List特殊操作 提示: 类比append函数 li = a, b li = li + c, d li a,b,c,d li += e li a,b,c,d,e li = a, b * 2 li a,b,a, b Python数据类型 Tuple数据类型 提示: Tuple类似List,但是一个“不变”的List 使用圆括号,而非中括号 li = (a, b, c) li (a,b,c) li0 a li2 c li-1 c li-2 b Python数据类型 Tuple不可修改 不能添加元素 不能删除元素 不能使用index去搜索 但是可以使用in操作去查询 优点 比List快,效率高 用于常量定义,或者Dictionary的键值 Python数据类型 字符串 提示: 单引号,双引号均可 多行字符串使用三个单引号或者三个双引号 s1 = Hello world s2 = “hello world” s1 Hello world s = s1 + + s2 s Hello world hello world len(s1) 11 Python数据类型 字符串格式化 提示: 使用百分号格式码做占位符 多个占位符同时格式化时,使用tuple作为参数 具体支持的格式参数,参考文档 Hello %s % koder Hello koder Hello %s and %s % (koder, lily) Hello koder and lily Hello integer %d % 10 Hello integer 10 Python数据类型 自定义类 提示: Class关键字开始表示类定义 冒号起始定义 class Test: . . . def _init_(self): . . . self.data = Hello World . . . . . . def print_out(self): . . . print self.data . . . test = Test() test.data Hello World test.print_out() Hello World Python数据类型 类的初始化 def _init_(self, arg1, arg2): . 这个函数是完成类实例初始化工作的 self.data1 = hello world self.data2 = 10 在_init_函数中,可以声明类的数据元素并且 赋值 self 关键字表示实例本身 Python数据类型 类的成员方法 提示: 类方法类似普通方法 def func_name(arg,arg): 第一个参数必须是self变量,表示实例自己 class A: def _init_(self, arg = None): self.data = arg def method(self, arg): print arg Python数据类型 类的继承 提示: 可以多重继承,用逗号分隔父类即可 可以用super调用父类同名函数 class A: def _init_(self, arg = None): self.data = arg def method(self, arg): print arg class B(A): def _init_(self, arg = None): super(B, self)._init_(arg) Test = B B.method(hello world) hello world Python数据类型 总结 Python中,一切皆是对象 重点掌握 Dictionary, Tuple, List的使用 掌握自定义类 其他基本数据类型 整数 浮点数 字符串 Python程序组织 Python源代码文件 *.py 一个py文件是一个模块 多个模块可以组成一个包 Python中间码文件 *.pyc 加快速度 Python程序组织 一个py文件 Python程序组织 一个py程序结构 pyproject Package_a Package_b _init_.py _init_.py Module1.py Module2.py Module0.py _init_.py Module3.py import Package_a.Module1 import Package_b.Module3 From Package_a.Module1 import * import Module0 from Module0 import Import Package_a.Module1 as m1 t = m1.Test() . from Package_a.Module1 import * t = Test() . Python程序执行 Python Shell 命令行执行 双击执行 numpy 针对数组的函数 矩阵运算 功能与matlab一样强大 数组基本 创建数组 import numpy as np a=np.array(1,2,3,4,5,6) b=np.zeros(2,3) c=np.ones(3,3) d=np.arange(0,30,3) a=np.array(1,2,3,4,5,8) b=np.array(3,2,1,5,4,8) a+b,a/b,a*b 表示对应元素的数组运 算,而不是矩阵运算 Numpy有专门的矩阵类型a = np.mat(a) PCA from numpy import * def pca(data, topN=100): means = mean(data, axis=0) #求列均值 data = data means #中心化 C = cov(data, rowvar=0) #求协方差 eigenvalues, eigenvectors = linalg.eig(mat(C) #求特征值和特 # 征向量 eigenIndex = argsort(eigenvalues) eigenIndex = eigenIndex:-(topN):-1 # 获取指定范围特 eigenvectors = eigenvectors:,eigenIndex #征向量 return means, eigenvalues, eigenvectors 谢 谢 !