一.numpy库学习笔记
NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多(该结构也可以用来表示矩阵(matrix))。
一个用python实现的科学计算,包括:
1、一个强大的N维数组对象Array;
2、比较成熟的(广播)函数库;
3、用于整合C/C++和Fortran代码的工具包;
4、实用的线性代数、傅里叶变换和随机数生成函数。numpy和稀疏矩阵运算包scipy配合使用更加方便。
二.matplotlib库学习笔记
Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。
1 import numpy as np 2 from PIL import Image 3 4 class picture: 5 6 def __init__ (self,position): 7 self.position = position 8 9 def Hand_drawn_style(self): 10 vec_el = np.pi/2 # 光源的俯视角度,弧度值 11 vec_az = np.pi/3 # 光源的方位角度,弧度值 12 depth = 6 # 深度权值,值越小背景区域越接近白色,值越大背景区域越接近黑色 13 im = Image.open(self.position).convert(‘L‘) # 打开图像并转变为灰度模式 14 a = np.asarray(im).astype(‘float‘) 15 grad = np.gradient(a) # 取图像灰度的梯度值 16 grad_x, grad_y = grad # 分别取图像的横纵梯度值 17 grad_x = grad_x * depth / 100. 18 grad_y = grad_y * depth / 100. 19 dx = np.cos(vec_el) * np.cos(vec_az) # 光源对x轴的影响 20 dy = np.cos(vec_el) * np.sin(vec_az) # 光源对y轴的影响 21 dz = np.sin(vec_el) # 光源对z轴的影响 22 A = np.sqrt(grad_x**2 + grad_y**2 + 1.) 23 uni_x = grad_x/A 24 uni_y = grad_y/A 25 uni_z = 1./A 26 a2 = 255*(dx * uni_x + dy * uni_y + dz * uni_z) # 光源归一化 27 a2 = a2.clip(0, 255) # 预防溢出 28 im2 = Image.fromarray(a2.astype(‘uint8‘)) # 重构图像 29 im2.save(‘猫和老鼠_.jpg‘) # 保存图像 30 im2.show() # 显示图像 31 32 if __name__ ==‘__main__‘: 33 position = ‘猫和老鼠1.jpg‘ 34 picture(position).Hand_drawn_style()
除了plt.axis方法,还可以通过xlim,ylim方法设置坐标轴范围
1 import numpy as np 2 import matplotlib.pyplot as plt 3 import matplotlib 4 matplotlib.rcParams[‘font.family‘]=‘SimHei‘ 5 matplotlib.rcParams[‘font.sans-serif‘]=[‘SimHei‘] 6 labels=np.array([‘高代‘,‘数分‘,‘python‘,‘解几‘,‘数据结构‘]) 7 nAttr=5 8 Python=np.array([71,72,80,84,75]) 9 angles=np.linspace(0,2*np.pi,nAttr,endpoint=False) 10 Python=np.concatenate((Python,[Python[0]])) 11 angles=np.concatenate((angles,[angles[0]])) 12 fig=plt.figure(facecolor="white") 13 plt.subplot(111,polar=True) 14 plt.plot(angles,Python,‘bo-‘,color=‘g‘,linewidth=2) 15 plt.fill(angles,Python,facecolor=‘g‘,alpha=0.2) 16 plt.thetagrids(angles*180/np.pi,labels) 17 plt.figtext(0.52,0.95,‘2019310143025 星星的成绩表‘,ha=‘center‘) 18 plt.grid(True) 19 plt.savefig(‘dota_radar.JPG‘) 20 plt.show()
1 import numpy as np 2 import matplotlib 3 import scipy.stats 4 matplotlib.use(‘TkAgg‘) 5 import matplotlib.pyplot as plt 6 import matplotlib.mlab as mlab 7 8 if __name__ == "__main__": 9 # 期望0,标准差1,条数50 10 mu, sigma, num_bins = 0, 1, 500 11 # 1M个随机数 12 x = mu + sigma * np.random.randn(10000) 13 14 # 正态分布的数据, 颜色的透明度0.5 15 n, bins, patches = plt.hist(x, num_bins, density=True, facecolor=‘blue‘, alpha=0.5) 16 # 直方图函数,x为x轴的值,normed=1表示为概率密度, 17 #即和为一,绿色方块,色深参数0.5.返回n个概率,直方块左边线的x值,及各个方块对象 18 # 拟合曲线 19 y = scipy.stats.norm.pdf(bins, mu, sigma) 20 plt.plot(bins, y, ‘r--‘) 21 plt.xlabel(‘Expectation‘) 22 plt.ylabel(‘Probability‘) 23 plt.title(‘histogram of normal distribution: $\mu = 0$, $\sigma=1$‘) 24 25 plt.subplots_adjust(left=0.15) #左边距 26 plt.grid(True) #打开网格线 27 plt.show()
原文:https://www.cnblogs.com/double-star/p/12837901.html