Python中的科学计算.

Slides:



Advertisements
Similar presentations
迪士尼公主裙衫变化记. 《白雪公主和七个小孩人》 《白雪公主和七个小矮人》,是世界电影史上第一部长动 画片,也是迪士尼的第一部。《白雪公主》不仅为迪斯尼 带来了第一尊奥斯卡小人,更是拯救迪斯尼于水火的贵 人 —— 在经济大萧条的 1937 年的美国,《白雪公主》为迪 斯尼赚到了 850 万美元,这约等于现在的数亿美元!
Advertisements

颐高集团项目中心 海亮地产开发模式研究报告. 目 录 目 录 第四部分:海亮地产高周转模式执行 第二部分:海亮地产高周转模式原因 第三部分:海亮地产高周转模式内涵 第一部分:海亮地产企业背景 第五部分:海亮地产高周转支撑体系.
手工加工全框眼镜技术 前调整确定加工基准制作模板割边 磨边磨安全角 (抛光) 装配 后调整检测.
融资融券业务的保证金与保证金比例 光大证券 · 信用业务管理总部 2015 年 12 月 ★融资融券业务投资者教育活动材料★
—— 海淀区高三化学《考试说明》解读 2015 年 1 月 29 日 学习《考试说明》 备考理综化学.
道家養生保健長壽藥膳 藥膳應用原則: 天人相應,道法自然 藥膳有兩個職能: 一是保健增壽,一是治療疾病。 ◎ 黃蕙棻.
1 债券融资业务拓展交流 债券业务部 二 O 一二年二月. 2 目 录  第一部分 债券融资业务概述  第二部分 东兴证券债券融资业务情况介绍及前景展望  第三部分 什么样的企业适合发债  第四部分 债券融资业务合作开发方式及激励探讨.
轴对称(一) 课堂引入 仔细观察下列图片,思考这些图片有什么样 的特点.
第二节 脉搏的评估及异 常时的护理. 教学目标  1 、解释有关名词  2 、说出脉搏、呼吸的正常值  3 、叙述脉搏、呼吸的测量方法;识别脉搏、 呼吸的异常变化  4 、叙述测量脉搏、呼吸的注意事项  5 、正确记录脉搏、呼吸,做到认真负责,实 事求是。
我的未来不是梦 攀枝花市经贸旅游学校. 1. 文中案例王萍苦恼的原因是 什么? 2. 你有哪些办法可以帮助王萍? 导入 思考  谁来帮帮她?
创意鄱阳湖— 一种基于无形资源理念开发鄱阳湖的思考 以传奇背景音乐作为开场,体现创意创造传奇 南昌大学 黄细嘉
友情提示:课件仅是理论探讨,不作为执法依据。
防盜裝置  學生科技探究.
项目四、腻子的施工  一、准备工作  二、安全与卫生  三、板件表面的处理  四、准备腻子  五、刮腻子  六、腻子的干燥  七、腻子的打磨  结束.
第四章:长期股权投资 长期股权投资效果 1、控制:50%以上 有权决定对方财务和经营.
饮食中的平衡 酸 性 食 物 与 碱 性 食 物.
第八章 互换的运用.
冷 热 疗 法.
期末書面報告指定書籍 王鼎鈞回憶錄---昨天的雲
個人理財規劃 第八章 投資規劃.
保育员工作职责.
行政法 之 行政救济篇.
川信-丰盛系列集合资金信托计划 2016年3月.
古文選讀.
开天门 梅州市中医医院 郑雪辉.
小儿斜颈的诊断与治疗.
农信社信贷产品实务技能提升培训.
大綱 一、設立科別 二、課程規劃原則 三、科目與學分數表 四、新課綱課程架構 五、新課綱課程規劃 (1)一般科目 (2)專業科目
信心的晨禱 經文: 詩篇 3 日期:
遠距健康照護- 我國遠距照護發展概況.
高齡者道路交通事故特性與道安防制措施 研究計畫報告
是重要的感觉器官,有许多感觉器,具触觉、嗅觉功能,还能感受异性的性信息素。 触角由柄节、梗节和鞭节三部分组成。
物理3-5选修模块.
系统简介 理财顾问 业务 是基于通信平台的技术优势,整合《理财周刊》、第一理财网、乾隆集团等合作伙伴提供的理财产品内容和权威的理财专家资源,以集中式呼叫中心为主的服务方式,让普通百姓可以享受到快捷、全面、专业、权威的资讯及投资理财的服务平台。
项目亮点 融资方为AA级发债主体,是当地唯一的综合平台公司
中小企業新增租稅優惠介紹 (研究發展支出適用投資抵減辦法 、增僱員工薪資費用加成減除辦法及智慧財產權讓與所得之減免規定)
复习 什么是结构? 结构是指事物的各个组成部分之间的有序搭配和排列。
2014年度企业所得税业务培训 蚌埠市地方税务局所得税科.
植物辨識及分類 呂春森 基隆市立暖暖高級中學 植物辨識及分類 呂春森 基隆市立暖暖高級中學.
第八課 蓼莪.
初中语文总复习 说明文 阅读专题 西安市第六十七中学 潘敏.
宦官那些事儿 宦官那些事儿 主讲:小学部李永善 主讲:小学部李永善.
企业所得税年度纳税申报表(2014年版)培训 国家税务总局所得税司 2014年12月.
Part I 上海土地市场.
第三课 闲话“家”常 1.
“华东师大数学系部分老同事活动”(辛卯聚会)记事
第五节 读图表述.
財團法人中華民國證券櫃檯買賣中心 交 易 部 中華民國101年8月
电视教育课 【5】 小学生行为习惯养成教育.
十二年國民基本教育- 103年中投區(臺中市、南投縣) 適性入學講綱
企业所得税年度纳税申报表(2014年版)培训 国家税务总局公告2014年第63号
管理好种公鸡提高雏鸡质量.
走进 莱 芜 制作人:楠楠.
宁波爱地房产市场年报 郊五区
第四章 时间序列的分析 本章教学目的:①了解从数量方面研究社会经济现象发展变化过程和发展趋势是统计分析的一种重要方法;②掌握时间数列编制的基本要求;③理解和掌握水平速度两方面指标的计算及运用④理解和掌握长期趋势分析和预测的方法。 本章教学重点:现象发展的水平指标和速度指标。 本章教学难点:现象变动的趋势分析。
腾冲叠水河瀑布 和来凤山公园 音乐:贝多芬——F大调浪漫曲 摄影、制作:曹珏 陈晓芬.
“08高考化学学业水平(必修科目)测试的命题和教学对策研究”
走自立自强之路 自己的事情自己做.
人類的循環系統.
珍惜时间 提高效率 初二1班
人无信不立 业无信不兴 公路建设市场信用体系 建设综述 交通运输部公路局 交通运输部公路局
Python金融数据分析教程 解放你的python编程能力 第6关金融数据的统计分析 Python金融数据分析教程 1.
范洪源 臺灣師範大學數學系 MATLAB 基本功能介紹 范洪源 臺灣師範大學數學系.
如何寫工程計畫書 臺北市童軍會考驗委員會 高級考驗營 版.
用Python建模与数据处理 俞熹 2017/1.
浙江大学医学院公共技术平台 实验仪器预约管理系统系列培训 医学院公共技术平台 丁巧灵
計算機程式 授課教師:廖婉君教授 第六單元 Arrays
06 无形资产投资环节的会计处理.
國民年金 np97006.
知识点:交流接触器的结构和工作原理 主讲教师:冯泽虎.
Presentation transcript:

Python中的科学计算

Numpy的生态系统(Ecosystem)

什么是Numpy? Numpy, Scipy, and Matplotlib 为python提供了类 似 MATLAB功能. 多重数组(矩阵) 快速的数值计算 (矩阵运算) 高层次的数学函数

NumPy的优势 相比而言,Python在数值运算方面通常比较慢,比 如: 1000 x 1000 矩阵乘法 Python > 10 min. Numpy ~0.03 seconds

大纲 数组(Arrays) 数组的形状与变换(Shaping and transposition) 数组的数学运算(Mathematical Operations) 索引与切片(Indexing and slicing) 广播机制(Broadcasting)

数组(Arrays) 数组的形状与变换(Shaping and transposition) 数组的数学运算(Mathematical Operations) 索引与切片(Indexing and slicing) 广播机制(Broadcasting)

数组(Arrays) 数字构成的结构化列表 向量(Vectors) 矩阵(Matrices) 图像(Images) 。。。

数组(Arrays) 𝑝 𝑥 𝑝 𝑦 𝑝 𝑧 𝑎 11 ⋯ 𝑎 1𝑛 ⋮ ⋱ ⋮ 𝑎 𝑚1 ⋯ 𝑎 𝑚𝑛 向量(Vectors ) 数字构成的结构化列表. 向量(Vectors ) 矩阵(Matrices) 图像(Images) 𝑝 𝑥 𝑝 𝑦 𝑝 𝑧 𝑎 11 ⋯ 𝑎 1𝑛 ⋮ ⋱ ⋮ 𝑎 𝑚1 ⋯ 𝑎 𝑚𝑛

数组(Arrays) 数字构成的结构化列表. 向量(Vectors ) 矩阵(Matrices) 图像(Images)

数组的基本特征 import numpy as np a = np.array([[1,2,3],[4,5,6]],dtype=np.float32) print(a.ndim, a.shape, a.dtype) 数组存在一个维度的概念,它可以是任何整数,包括0, 数组是有类型的: np.uint8, np.int64, np.float32, np.float64 数组必须是紧密的,数组中的每一个元素都必须存在而且是相同的类型。

创建数组 np.ones, np.zeros np.arange np.concatenate np.astype np.zeros_like, np.ones_like np.random.random

创建数组 np.ones, np.zeros np.arange np.concatenate np.astype np.zeros_like, np.ones_like np.random.random

创建数组 np.ones, np.zeros np.arange np.concatenate np.astype np.zeros_like, np.ones_like np.random.random

创建数组 np.ones, np.zeros np.arange np.concatenate np.astype np.zeros_like, np.ones_like np.random.random

创建数组 np.ones, np.zeros np.arange np.concatenate np.astype np.zeros_like, np.ones_like np.random.random

创建数组 np.ones, np.zeros np.arange np.concatenate np.astype np.zeros_like, np.ones_like np.random.random

创建数组 np.ones, np.zeros np.arange np.concatenate np.astype np.zeros_like, np.ones_like np.random.random

创建数组 np.ones, np.zeros np.arange np.concatenate np.astype np.zeros_like, np.ones_like np.random.random

注意事项 数组必须是紧密的,不能存在空洞 数组中的元素必须是同一类型 不能将不同形状的数组合并在一起

数组的形状与变换(Shaping and transposition) 数组(Arrays) 数组的形状与变换(Shaping and transposition) 数组的数学运算(Mathematical Operations) 索引与切片(Indexing and slicing) 广播机制(Broadcasting)

数组的形状 a = np.array([1,2,3,4,5,6]) a = a.reshape(3,2) a = a.ravel() 总量固定, 可以利用-1 推断对应坐标轴的形状 行优先。

返回值 Numpy 的函数运算可以返回视图(views )或者拷 贝(copies). 视图(Views )与原始的数组共享数据,类似于之 前所说的指称(references)。改变视图的元素也会 原始数组发生改变。 Numpy的文档 给出了哪些函数返回视图哪些函数返 回拷贝 运用np.copy, np.view两个函数可以直接指定是拷贝 还是视图。

数组的转置 a = np.arange(10).reshape(5,2) a = a.T a = a.transpose((1,0)) np.transpose的作用是交换坐标轴, a.T交换头两个坐标轴。

保存和载入数组 np.savez(‘data.npz’, a=a) data = np.load(‘data.npz’) a = data[‘a’] NPZ 文件可以保存多重数组 np.savez_compressed 也可以执行类似的功能。

图像数组(Image Array) 在计算机中,图像(Images)是一个3D的数组: 宽(width), 高(height), 和频道(channels) 常用的图像形式: height x width x RGB height x width 变化: 渠道也可能是BGR 数组可能是 [width x height],而不是[height x width]

存储和调入图像 SciPy: skimage.io.imread,skimage.io.imsave height x width x RGB PIL / Pillow: PIL.Image.open, Image.save width x height x RGB OpenCV: cv2.imread, cv2.imwrite height x width x BGR

小结 我们已经介绍了如何创建数组、改变数组形状、以及 数组转置 Questions?

数组的数学运算(Mathematical Operations) 数组(Arrays) 数组的形状与变换(Shaping and transposition) 数组的数学运算(Mathematical Operations) 索引与切片(Indexing and slicing) 广播机制(Broadcasting)

数学运算 Numpy可以对数组进行逐个元素的算术运算 逻辑运算返回的是布尔数组 运算会导致数组的实时改变

数学运算 Numpy可以对数组进行逐个元素的算术运算 逻辑运算返回的是布尔数组 运算会导致数组的实时改变

数学运算 Numpy可以对数组进行逐个元素的算术运算 逻辑运算返回的是布尔数组 运算会导致数组的实时改变

数学运算 Numpy可以对数组进行逐个元素的算术运算 逻辑运算返回的是布尔数组 运算会导致数组的实时改变

数学运算中向上兼容 所有数学运算会向上兼容运算精度. uint64 + uint16 => uint64 float32 / int32 => float32

数学运算中的通用函数 在Numpy中存在一个特别的类型:ufuncs 这一函数运算依然是逐个元素进行的(Element- wise) 例如: np.exp np.sqrt np.sin np.cos np.isnan

数学运算中的通用函数 在Numpy中存在一个特别的类型:ufuncs 这一函数运算依然是逐个元素进行的(Element- wise) 例如: np.exp np.sqrt np.sin np.cos np.isnan

数学运算中的通用函数 在Numpy中存在一个特别的类型:ufuncs 这一函数运算依然是逐个元素进行的(Element- wise) 例如: np.exp np.sqrt np.sin np.cos np.isnan

索引与切片(Indexing and slicing) 数组(Arrays) 数组的形状与变换(Shaping and transposition) 数组的数学运算(Mathematical Operations) 索引与切片(Indexing and slicing) 广播机制(Broadcasting)

Numpy中的索引(Indexing) 注意事项: x[0,0] # top-left element x[0,-1] # first row, last column x[0,:] # first row (many entries) x[:,0] # first column (many entries) 注意事项: 和普通Python序列类型一样,是从0开始的 对于多维数组,每个维度使用逗号分隔。

数组的索引和切片 切片返回的结果是视图(views)。任何对切片的修改都会覆 盖原始数组 I = I[:,:,::-1] # 交换 I[I<10] = 0 # 筛选与赋值 I[[1,3], :] # 查询第2和4行的所有元素 切片返回的结果是视图(views)。任何对切片的修改都会覆 盖原始数组 可以使用列表或者布尔数组实现切片操作(Fancy Indexing), 注意此时返回的结果是拷贝而不是试图.

Python传统的切片操作 格式: start:stop:step a = list(range(10)) a[:3] # indices 0, 1, 2 a[-3:] # indices 7, 8, 9 a[3:8:2] # indices 3, 5, 7 a[4:1:-1] # indices 4, 3, 2 (this one is tricky)

数组中的坐标轴 a.sum() # 将所有元素进行求和运算 a.sum(axis=0) # 对每一行的所有元素求和 a.sum(axis=1, keepdims=True) 利用坐标轴参数控制运算实施的对象 通常指定好的坐标轴会在结果中消除,使用 keepdims可以保留所有维度

数组中的坐标轴

汇总函数(Aggregate Functions) 如何对一个数组求平均值 np.mean(data) data.mean()

汇总函数(Aggregate Functions)

广播机制(Broadcasting) 数组(Arrays) 数组的形状与变换(Shaping and transposition) 数组的数学运算(Mathematical Operations) 索引与切片(Indexing and slicing) 广播机制(Broadcasting)

Numpy 中的广播机制(Broadcasting) a = a + 1 # add one to every element 当我们对多个数组进行运算的时候,就会用到广播机制 每个维度必须实现匹配,从右往左的方式实现匹配 大小为1的维度会自动广播(就好像自动复制一样) 如果维度不包含1,那么,多个数组必须有相同的形状 额外的大小为1的维度会按照需要添加在最左边。

Numpy 中的广播机制(Broadcasting)

广播机制的例子 假设我们希望向一个图像数组中加入一个颜色取值 a + b 会自动将额外两个维度,从而让b自动变成1 x 1 x 3的形状。 a.shape is (100, 200, 3) b.shape is (3, ) a + b 会自动将额外两个维度,从而让b自动变成1 x 1 x 3的形状。 a+b这一加法运算将会在第一和第二个维度进行广播。

失败的广播 如果a.shape是(100, 200, 3),但是b.shape (4, ), 那么,a + b 将会出错。 因此,广播中要求右侧的数组要么和左侧数组形状一 致,要么是1。

一些需要避免bug的方法 需要准确知道数据类型 需要时刻注意返回的结果是视图还是拷贝 可以利用matplotlib做一些直观的测试 利用pdb. 数组的乘法(np.dot vs np.multipy).