Numpy与Matplotlib读书笔记

(1)numpy

简介

numpy 是用于处理含有同种元素的多维数组运算的第三方库。
numpy 库还包括三角运算函数、傅里叶变换、随机和概率分布、基本数值统计、位运算、矩阵运算等非常丰富的功能,读者在使用时可以到官方网站查询。

numpy 库处理的最基础数据类型是由同种元素构成的多维数组(ndarray),简称“数组”。

数组中所有元素的类型必须相同,数组中元素可以用整数索引,序号从0开始。ndarray 类型的维度(dimensions)叫做轴(axes),轴的个数叫做秩(rank)。一维数组的秩为1,二维数组的秩为2,二维数组相当于由两个一维数组构成。

由于numpy 库中函数较多且命名容易与常用命名混淆,建议采用如下方式引用numpy 库: >>>import numpy as np

其中,as 保留字与import 一起使用能够改变后续代码中库的命名空间,有助于提高代码可读性。简单说,在程序的后续部分中,np 代替numpy。

numpy 库常用的创建数组函数
在这里插入图片描述

numpy 库的算术运算函数
在这里插入图片描述

这些函数中,输出参数y 可选,如果没有指定,将创建并返回一个新的数组保存计算结果;如果指定参数,则将结果保存到参数中。例如,两个数组相加可以简单地写为a+b,而np.add(a,b,a)则表示a+=b。
numpy 库的比较运算函数
在这里插入图片描述

其将返回一个布尔数组,它包含两个数组中对应元素值的比较结果,例子如下。

where()函数是三元表达式x if condition else y 的矢量版本。
numpy 库的其他运算函数
在这里插入图片描述

(2)matplotlib库

简介

matplotlib 是提供数据绘图功能的第三方库,其pyplot 子库主要用于实现各种数据展示图形的绘制。
matplotlib.pyplot 是matplotlib 的子库,引用方式如下: >>>import matplotlib.pyplot as plt
上述语句与import matplotlib.pyplot 一致,as 保留字与import 一起使用能够改变后续代码中库的命名空间,有助于提高代码可读性。简单说,在后续程序中,plt 将代替matplotlib.pyplot。
matplotlib 库由一系列有组织有隶属关系的对象构成,这对于基础绘图操作来说显得过于复杂。因此,matplotlib 提供了一套快捷命令式的绘图接口函数,即pyplot 子模块。pyplot 将绘图所需要的对象构建过程封装在函数中,对用户提供了更加友好的接口。pyplot 模块提供一批预定义的绘图函数,大多数函数可以从函数名辨别它的功能。
plt 库的绘图区域函数
在这里插入图片描述

使用figure()函数创建一个全局绘图区域,并且使它成为当前的绘图对象,figsize参数可以指定绘图区域的宽度和高度,单位为英寸。鉴于figure()函数参数较多,这里采用指定参数名称的方式输入参数。 >>> plt.figure(figsize=(8,4))
subplot()都用于在全局绘图区域内创建子绘图区域,其参数表示将全局绘图区域分成nrows 行和ncols 列,并根据先行后列的计数方式在plot_number 位置生成一个坐标系,实例代码如下,三个参数关系如图10.3 所示。其中,全局绘图区域被风割成3x2 的网格,其中,在第4 个位置绘制了一个坐标系。
axes()默认创建一个subplot(111)坐标系,参数rec = [left,bottom,width,height]中四个变量的范围都为[0,1],表示坐标系与全局绘图区域的关系;axisbg 指背景色,默认为white。
plt 库的读取和显示函数
在这里插入图片描述

plt 库的基础图表函数
在这里插入图片描述
二、使用numpy、matplotlib模块绘制成绩雷达图

import numpy as np
import matplotlib.pyplot as plt

#标签
labels = np.array([‘第一周’,‘第二周’,‘第三周’,‘第四周’,‘第五周’,‘第六周’])
#数据个数
dataLenth = 6
#数据
data = np.array([50,106.7,90,100,107.5,78])

angles = np.linspace(0, 2*np.pi, dataLenth, endpoint=False)
data = np.concatenate((data, [data[0]])) # 闭合
angles = np.concatenate((angles, [angles[0]])) # 闭合

fig = plt.figure()
ax = fig.add_subplot(111, polar=True)# polar参数!!
ax.plot(angles, data, ‘bo-’, linewidth=2)# 画线
ax.fill(angles, data, facecolor=‘r’, alpha=0.55)# 填充
ax.set_thetagrids(angles * 180/np.pi, labels, fontproperties=“SimHei”)
ax.set_title(“许皓程(学号:2019310143019)成绩雷达图”, va=‘bottom’, fontproperties=“SimHei”)
ax.set_rlim(0,110)
ax.grid(True)
plt.show()

在这里插入图片描述
三、使用PIL、numpy模块绘制自定义手绘风

from PIL import Image
import numpy as np

a = np.asarray(Image.open(“3.jfif”).convert(‘L’)).astype(‘float’)

depth = 10. #(0-100)
grad = np.gradient(a) #取图像灰度的梯度值
grad_x, grad_y = grad #分别取横纵图像的梯度值
grad_x = grad_xdepth/100.
grad_y = grad_y
depth/100.
A = np.sqrt(grad_x2 + grad_y2 + 1.)
uni_x = grad_x/A
uni_y = grad_y/A
uni_z = 1./A

vec_el = np.pi/2.2 # 光源的俯视角度,弧度值
vec_az = np.pi/4. # 光源的方位角度,弧度值
dx = np.cos(vec_el)*np.cos(vec_az) #光源对x 轴的影响
dy = np.cos(vec_el)*np.sin(vec_az) #光源对y 轴的影响
dz = np.sin(vec_el) #光源对z 轴的影响

b = 255*(dxuni_x + dyuni_y + dz*uni_z) #光源归一化
b = b.clip(0,255)

im = Image.fromarray(b.astype(‘uint8’)) #重构图像
im.save(‘3.jpg’)
print(“图像手绘化已完成”)
在这里插入图片描述
在这里插入图片描述
四、使用matplotlib绘制sinx,cosx图像
from matplotlib import pyplot as plt
import numpy as np
plt.figure(figsize=(4,2))#生成的图片的大小
x = np.linspace(-2 * np.pi,2*np.pi,100)#设置一个序列(-2pi,2pi,之间设置100个点)
y = np.sin(x)#需要绘制的函数
y1 = np.cos(x)

plt.ylim(-1,1)#限制y轴的范围
plt.xlim(-4,4)#x轴的范围

plt.xlabel(“X”)#x轴的名称(显示在轴的下边)
plt.ylabel(“Y”)#y轴的名称(显示在轴的左边)
plt.title("sinx cosx ")#图像标题 在图像的上面
plt.plot(x,y,label=“sinx”)#根据函数坐标绘制折线图
plt.plot(x,y1,label = “cosx”)#根据函数坐标绘制折线图
plt.text(1,1,“Text”,fontdict={‘size’:16,‘color’:‘r’})
plt.annotate(‘sin(np.pi)=’,xy =(-np.pi,0),xytext=(-np.pi,2),fontsize=16,
arrowprops = dict(facecolor=‘black’,shrink=0.01))#设置注释
plt.show()
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值