学习过程主要依照中国MOOC课程,感谢MOOC,感谢北理授课大佬。
单元1:NumPy库入门
数据维度的Python表示:
- 一维数据:列表和集合(无序)类型
- 多维数据:多维列表类型
- 高维数据:字典类型或数据表示格式(json,xml.yaml)
NumPy是一个开源的Python科学计算基础库。
- 一个强大的N维数组对象 ndarray
- 广播功能函数
- 整合C/C++/Fortran代码的工具
- 线性代数、傅里叶变换、随机生成树等功能
NumPy是SciPy、Pandas等数据处理或科学计算库的基础。
引用: import numpy as np(建议使用上述约定的别名)
ndarray: 是一个多维数组类型,由两部分构成:1)实际的数据;2)描述这些数据的元数据,如数据维度、数据类型等。ndarray数组一般要求所有元素类型相同,数组下标从0开始。
轴(axis):保存数据的维度
秩(rank):轴的数量
- 创建
从Python中的列表、元祖等类型创建ndarray数组;
1
x=np.array(list/tuple)
- 使用NumPy中函数创建ndarray数组;
1 | np.arange(n):类似range()函数; |
- 从字节流中创建ndarray数组;
- 从文件中读取特定格式,创建ndarray数组;
- 维度变换
.reshape(shape):不改变数组元素,返回一个shape形状的数组,原数组不变;
.resize(shape):同上,但修改原数组;
.swapaxes(ax1,ax2):将数组n个维度中两个维度进行调换;
.flatten():对数组进行降维,返回折叠后的一维数组,原数组不变; - 类型转换
.astype(new_type):数组的类型转换 - 数组转为列表
.tolist() - 操作:索引、切片
- 运算
数组与标量之间的运算作用于数组中每一个元素。
一元函数运算,二元函数运算
单元2:NumPy数据存取与函数
数据的csv文件存取
csv文件:逗号分隔值文件。只能有效存储一维和二维数据。
将ndarray保存为csv:
np.savetxt(frame,array,fmt=’%.18e’,delimiter=None)
frame:文件、字符串或产生器;
array:存入文件的数组;
fmt:写入文件的格式;
delimiter:分割字符串,默认是空格;
将csv写入ndarray:
np.loadtxt(frame,dtype=np.float,delimiter=None,unpack=False)
unpack:默认False,如为True,读入属性将分别写入不同变量;
多维数据的存取
生成文件:
a.tofile(frame,sep=’’,format=’%s’)
sep:数据分割字符串,如为空,则生成一个二进制文件,而不是文本文件;
format:写入数据的格式;
还原数据:
np.fromfile(frame,dtype=float,count=-1,sep=’’)
count:读入元素个数,-1表示读入整个文件;
NumPy的便捷文件存取:
np.save(fname,array)或np.savez(fname,array)
frame:文件名,以.npy为扩展名,压缩扩展名为.npz;
np.load(fname)
NumPy的随机数函数
random子库中的的随机数基本函数:rand/randn/randint/seed;
random子库中的的随机数高级函数:shuffle/permutation/choice;
带有分布的高级函数:uniform/normal/poisson;
NumPy的统计函数
常用统计函数:sum/mean/average/std/var;
其他统计函数:min/max/argmin/argmax/unravel_index/ptp/median;
NumPy的梯度函数
np.gradient(f):计算数组f中元素的梯度,当f为多维时,返回每个维度梯度,梯度,即斜率;
单元3:实例:图像的手绘效果
图像的数组表示
RGB色彩模式,每个通道0-255。
PIL,Python Image Library,一个具有强大图像处理能力的第三方库。
from PIL import Image:Image是PIL库中代表一个图像的类(对象)
图像是一个由像素组成的二维矩阵,每个元素是一个RGB值。
图像的变换
读入图像,修改RGB值,修改后保存为新的图像。
图像手绘效果实例
特征:黑白灰色;边界线条较重;相同或相近颜色趋于白色;略有光源效果;
1 | from PIL import Image |
以上。
注:转载文章请注明出处,谢谢~