第一单元:
一、ndarray:n维数组对象,
①数组对象可以去掉元素之间运算所需要的循环,使一维向量更像单个数据
②ndarray由两部分构成:实际数据和描述数据的数据(数据的维度,数据的类型一般要求数组的类型相同)
轴:保存数据的维度 秩:轴的数量
![](https://img.haomeiwen.com/i8622222/d4664f7ceb13d0a5.png)
![](https://img.haomeiwen.com/i8622222/de8070a227283f5a.png)
![](https://img.haomeiwen.com/i8622222/43cccc10a0daaaa0.png)
![](https://img.haomeiwen.com/i8622222/2009a8c86a8a74ea.png)
![](https://img.haomeiwen.com/i8622222/bdf0a37cf44afdce.png)
二、ndarray数组的创建
![](https://img.haomeiwen.com/i8622222/051c386d80465e6a.png)
![](https://img.haomeiwen.com/i8622222/f1801dc94472b09a.png)
![](https://img.haomeiwen.com/i8622222/af88447f369a136a.png)
![](https://img.haomeiwen.com/i8622222/a2822d42aa9d377e.png)
![](https://img.haomeiwen.com/i8622222/a7e1e0573c3df5ed.png)
![](https://img.haomeiwen.com/i8622222/0922b6d8446ce3f0.png)
endpoint:表示10是否是生成的元素的最后一个
![](https://img.haomeiwen.com/i8622222/a5e2d29814212560.png)
三、数组的维度和元素类型的变换
![](https://img.haomeiwen.com/i8622222/4e0f6a92d71bf738.png)
注意:reshape和flatten不修改原数组,而是生成新的数组
![](https://img.haomeiwen.com/i8622222/597439db0dbd03f0.png)
astype方法会产生一个数组的拷贝,会产生新的数组,即使元素的类型一致
![](https://img.haomeiwen.com/i8622222/2874bd7b0a786be5.png)
![](https://img.haomeiwen.com/i8622222/227b51f52daaefb4.png)
![](https://img.haomeiwen.com/i8622222/1db510c86d84955a.png)
三、ndarray数组的操作——索引和切片
![](https://img.haomeiwen.com/i8622222/0f44fc7b3ec39b4c.png)
![](https://img.haomeiwen.com/i8622222/f08762a3e03240fc.png)
一维数组的切片:数组的起始下标 数组的终止下标(不包含) 步长
![](https://img.haomeiwen.com/i8622222/0940b85378d8df3c.png)
![](https://img.haomeiwen.com/i8622222/65a503c41af41cc0.png)
四、ndarray数组的运算
![](https://img.haomeiwen.com/i8622222/55a4b0447f5c08ed.png)
![](https://img.haomeiwen.com/i8622222/cd92c7ba46610ce4.png)
![](https://img.haomeiwen.com/i8622222/9643d8e82f4280b4.png)
![](https://img.haomeiwen.com/i8622222/2caeb4c03ff6ea75.png)
第二单元
numpy的数据存取
将numpy数据的元素存入.csv文件 savetxt中fmt是在写入文件时设定的格式;
![](https://img.haomeiwen.com/i8622222/c43a552819050e8a.png)
![](https://img.haomeiwen.com/i8622222/23194ad9909fe216.png)
![](https://img.haomeiwen.com/i8622222/3a70d482ae0fca0f.png)
![](https://img.haomeiwen.com/i8622222/21f0d1bda019227e.png)
多维数据的存取:
![](https://img.haomeiwen.com/i8622222/5a7859b42303ca84.png)
![](https://img.haomeiwen.com/i8622222/1280a9b79877a17d.png)
count可以设置一个读入的数量;. dtype设置读取的数据的类型,在下面dtype如果指定为str就会读取50个逗号;
注意:fromfile会读取一个一维数组,所以要reshape成三维数组
![](https://img.haomeiwen.com/i8622222/580e5c5cd6cb0020.png)
![](https://img.haomeiwen.com/i8622222/ec0322fe1b88b29c.png)
![](https://img.haomeiwen.com/i8622222/773933d6dd9e4a52.png)
随机数函数
通过调用seed调用相同的随机数组
![](https://img.haomeiwen.com/i8622222/f14c4ece1ede8093.png)
![](https://img.haomeiwen.com/i8622222/041fd2940e6a3d00.png)
第一轴即最外面的维度来进行打乱数组;
![](https://img.haomeiwen.com/i8622222/afb1de97c77c2e9a.png)
注意:permutation的函数会返回一个新的数组;choice只能从一维数组中抽取
![](https://img.haomeiwen.com/i8622222/adb696d37740f6e1.png)
NUMPY的统计函数
axis设置为n那么就在n+1的维度上进行运算
![](https://img.haomeiwen.com/i8622222/6faea270afb41054.png)
![](https://img.haomeiwen.com/i8622222/0f4ba94bf526b2dd.png)
![](https://img.haomeiwen.com/i8622222/7b40c446c2a586ee.png)
argmin和argmax可以将数组的元素的位置返回
![](https://img.haomeiwen.com/i8622222/8718fa5fa6961244.png)
当只有一侧有数字时,梯度就用当前值减去上一个值得到梯度;
![](https://img.haomeiwen.com/i8622222/7482c9ba8cd3fcd3.png)
![](https://img.haomeiwen.com/i8622222/20d1aa9336cd5f4b.png)
![](https://img.haomeiwen.com/i8622222/838e38b085f29620.png)
手绘效果代码:
# coding:utf8
fromPILimportImage
importnumpyasnp
if__name__ =='__main__':
a = np.asanyarray(Image.open("data/5503.jpg").convert('L')).astype('float')
depth =10# (0-100)
grand = np.gradient(a)#取图像的灰度的梯度值
grand_x,grand_y = grand#分别取横纵图像的梯度值
grand_x = grand_x * depth /100
grand_y = grand_y * depth /100
A = np.sqrt(grand_x **2+ grand_y **2+1.)
uni_x = grand_x / A
uni_y = grand_y / A
uni_z =1./ A
vec_e1 = np.pi /2.2#光源的俯视角度, 弧度值
vec_az = np.pi /4.#光源的但范围角度 弧度值
dx = np.cos(vec_e1) * np.cos(vec_az)#光源对轴的影响
dy = np.cos(vec_e1) * np.cos(vec_az)
dz = np.sin(vec_e1)
b =255* (dx * uni_x + dy * uni_y + dz * uni_z)#光源归一化
b = b.clip(0,255)
im = Image.fromarray(b.astype('uint8'))
im.save('data/55_hand.jpg')
网友评论