能今天做好的事就不要等到明天。以梦为马,学习趁年华。
1.1需要掌握的知识
掌握表示、清洗、统计和展示数据的能力
1.2编程工具
使用Anaconda IDE集成开发工具
需要理解和掌握如下工具的使用
conda
Spyder
IPython
2.1conda
一个工具,用于包管理和环境管理。
包管理与pip类似,管理Python第三方库。
环境管理能够允许用户使用不同版本Python,并能灵活切换。
conda将工具、第三方库、Python版本、conda都当作包,同等对待。
2.2anaconda
一个集合,包括conda、 某版本Python、 一批第三方库等。
2.3编程工具:Spyder
2.4IPython
它是一个功能强大的交互式shell,适合进行交互式数据可视化和GUI相关应用
IPython的%run命令
%run用于运行.py程序
注意: %run在一个空的命名空间执行%
IPython的%魔术命令
Python与IPython的区别
Python只是一个解释器,用户给一段输入,则它给一段输出。
IPython是一个能够调用核心的Python解释器的交互式环境,IPython只是前台的一个显示脚本,而对程序的执行是由后台的Python的内核执行。
3.1文本工具类IDE介绍
IDLE
Notepad++
Sublime Text
Vim & Emacs
Atom
Komodo Edit
3.1.1IDLE
它是Python自带的、默认的、常用的入门级编写工具
适用于Python入门、功能简单直接、代码量小的需求
3.1.2Sublime Text
它是专门为程序员开发的第三方专用编程工具,具有专业的编程体验和多种编程风格
3.2集成工具类IDE
PyCharm
Wing
PyDev & Eclipse
Visual Studio
Anaconda & Spyder
Canopy
3.2.1通用类型
Wing
它是公司维护,工具收费的;调试功能丰富;版本控制,版本同步;适合多人共同开发
Visual Studio & PTVS
它是微软公司维护,Win环境为主,调试功能丰富的一款工具
Eclipse & PyDev
它是开源IDE开发工具,需要具备一定的开发环境
PyCharm
社区版免费简单,集成度高,适合较复杂工程
3.2.2科学计算&数据分析
Canopy
公司维护,工收费;支持近500个第三方库;适合科学计算领域应用开发
Anaconda
开源免费;支持近800个第三方库
4.1维度
一组数据的组织形式
一维数据;一维数据由对等关系的有序或无序数据构成,采用线性方式组织。
二维数据:二维数据由多个一维数据构成,是一维数据的组合形式。
多维数据:多维数据由一维或二维数据在新维度上扩展形成。
高维数据:高维数据仅利用最基本的二元关系展示数据间的复杂结构
4.2数据维度的Python表示
一维数组:列表和集合类型
维数据:列表类型
多维数据:列表类型
高维数据:字典类型或数据表示格式JSON、XML和YAML格式
4.3Numpy的数组对象:ndarray
NumPy
NumPy是一个 开源的Python科学计算基础库。
一个强大的N维数组对象ndarray
广播功能函数
整合C/C++/Fortran代码的工具
线性代数、傅里叶变换、随机数生成等功能
NumPy是SciPy、Pandas等 数据处理或科学计算库的基础。
NumPy的引用
import numpy as np
N维数组对象: ndarray
数组对象可以去掉元素间运算所需的循环,使一维向量更像单个数据。
设置专门的数组对象,经过优化,可以提升这类应用的运算速度。
观察:科学计算中,一个维度所有数据的类型往往相同。
数组对象采用相同的数据类型,有助于节省运算和存储空间。
ndarray是一个多维数组对象,由两部分构成:
实际的数据
描述这些数据的元数据(数据维度、数据类型等)
ndarray数组一般要求所有元素类型相同(同质),数组下标从0开始。
轴(axis):保存数据的维度
秩(rank):轴的数量
ndarray对象的属性
ndarray的元素类型
对比: Python语法仅支持整数、浮点数和复数3种类型
科学计算涉及数据较多,对存储和性能都有较高要求。
对元素类型精细定义,有助于NumPy合理使用存储空间并优化性能。
对元素类型精细定义,有助于程序员对程序规模有合理评估。
4.4ndarray数组的创建方法
从Python中的列表、元组等 类型创建ndarray数组
使用NumPy中函数创建ndarray数组,如: arange,ones, zeros等。
从字节流( raw bytes )中创建ndarray数组。
从文件中读取特定格式,创建ndarray数组。
4.5ndarray数组的操作
索引:获取数组中特定位置元素的过程
切片:获取数组元素子集的过程
一维数组的索引和切片
与Python的列表类似
多维数组的索引和切片
4.6ndarray数组的运算
数组与标量之间的运算作用于数组的每一个元素
4.7总结
数据的维度:一维、二维、多维、高维
ndarray类型属性创建和变换
数组的索引和切片
数组的运算:一元函数、二元函数
5.1保存CSV文件
np.savetxt(fname, array, fmt='%.18e', delimiter=None)
fname:文件、字符串或产生器,可以是.gz或.bz2的压缩文件。
array:存人文件的数组。
fmt:写入文件的格式,例如: %d %.2f %.18e。
delimiter:分割字符串,默认是任何空格。
5.2写入CSV文件
np.loadtxt(fname, dtype=np.float, delimiter=None,unpack=False)
fname:文件、字符串或产生器,可以是.gz或.bz2的压缩文件。
dtype:数据类型,可选。
delimiter:分割字符串,默认是任何空格。
unpack:如果True, 读入属性将分别写入不同变量。
5.3CSV文件的局限性
CSV只能有效存储一维和二维数组
np.savetxt() np.loadtxt()只能有效存取一维和二维数组
5.4多维数据的存取
a.tofile(firame, sep='format='%s')
fname:文件、字符串。
sep:数据分割字符串,如果是空串,写人文件为二进制。
format:写人数据的格式。
5.5多维数组的读取
ap.fromfile(fname, dtype=float, count=-1,sep='')
fname:文件、字符串。
dtype:读取的数据类型。
count:读入元素个数,-1表示读入整个文件。
sep:数据分割字符串,如果是空串,写人文件为二进制。
需要注意:
该方法需要读取时知道存入文件时数组的维度和元素类型
a.tofileO和np.fromfile(需要配合使用
可以通过元数据文件来存储额外信息
5.6NumPy的便捷文件存取
np.save(fname, array)或np.savez(fname, array)
fname:文件名,以.npy为扩展名,压缩扩展名为.npz
array:数组变量
np.load(fname)
5.7NumPy的随机函数
NumPy的随机数函数子库
np.random的随机数函数
5.8NumPy的统计函数
NumPy直接提供的统计类函数
np.random的统计函数
5.9NumPy的梯度
np.random的梯度函数
梯度:连续值之间的变化率,即斜率。
5.10总结
5.10.1数据存取
5.10.1随机函数
5.10.1统计函数
5.10.1梯度函数
6.1图像库
PIL库:PIL, Python Image Library
PIL库是一个具有强大图像处理能力的第三方库
在命令行下的安装方法: pip install pillow
from PIL import Image
Image是PIL库中代表一个图像的类 (对象)
图像是一个三维数组,维度分别是高度、宽度和像素RGB值。
6.2图像的变换
读入图像后,获得像素RGB值,修改后保存为新的文件。
6.3图像的手绘效果实例分析
手绘效果的几个特征:
黑白灰色
边界线条较重
相同或相近色彩趋于白色
略有光源效果
6.4图像的手绘效果实例
6.4.1梯度的重构
利用像素之间的梯度值和虚拟深度值对图像进行重构
根据灰度变化来模拟人类视觉的明暗程度
6.4.2光源效果
根据灰度变化来模拟人类视觉的远近程度
●设计一个位于图像斜上方的虚拟光源
●光源相对于图像的俯视角为Elevation方位角为Azimuth
●建立光源对个点梯度值的影响函数
●运算出各点的新像素值
6.4.3梯度归一化
6.4.4图像生成
希望能够给对此感兴趣的小伙伴有所帮助。
需要完整PDF版本笔记的小伙伴在评论区留下“笔记”即可