9:30

开会

9:40

结束会议内容正式进入集训

10:40

进行视觉方面的初步学习,之前已经进行过相关内容的实践,环境无需安装,今日进行系统性的numpy,matplotlib学习
初步学习内容选自<菜鸟学习>

NumPy Matplotlib初步认知理解

学习目标 掌握Numpy的大致使用方法即可

Numpy是一个Python库,用于支持大规模多维数组和矩阵运算以及高效处理数据,通常运用在科学计算和数据分析领域
Matplotlib则是Python的一个绘图库,通常与NumPy一起使用绘画经过处理后的数据,也可以与图形工具包一起使用,例如PyQt与wxPython



import numpy as np
from matplotlib import pyplot as plt

'''
分别导入两个库
'''
x = np.arange(1, 11)
# np.arange() 函数创建 x 轴上的值 
# y 轴上的对应值存储在另一个数组对象 y 中

y = 2 * x + 5
plt.title("Matplotlib demo")
plt.xlabel("x axis caption")
plt.ylabel("y axis caption")
plt.plot(x, y)
# 这些值使用 matplotlib 软件包的 pyplot 子模块的 plot() 函数绘制。
plt.show()
# 图形由 show() 函数显示。

其中np.arange(1, 11)通俗理解为X的数值范围,y则是对应的函数表达式,title为标题,xylable为横纵坐标轴表示,最后使用plot进行函数绘制,show进行函数显示

plot函数还可以接收第三个参数作为格式字符串,即利用特殊自付替代直线显示

例如plt.plot(x,y,"ob") 会将线换为蓝色的点,其中“ob”中o的含义为圆形标记,b的含义为蓝色,即蓝色的点


样式表格,点击展开

标记样式
-实线样式
--短横线样式
-.点划线样式
:虚线样式
.点标记
,像素标记
o圆标记
v倒三角标记
^正三角标记
<左三角标记
>右三角标记
1下箭头标记
2上箭头标记
3左箭头标记
4右箭头标记
s正方形标记
p五边形标记
*星形标记
h六边形标记 1
H六边形标记 2
+加号标记
xX 标记
D菱形标记
d窄菱形标记
|竖直线标记
_水平线标记
字符颜色
b蓝色
g绿色
r红色
c青色
m品红色
y黄色
k黑色
w白色


样例学习-如何利用matplotlib生成正弦波图

# 计算正弦曲线上点的 x 和 y 坐标
x = np.arange(0,  3  * np.pi,  0.1) 
y = np.sin(x)
plt.title("sine wave form")  
# 使用 matplotlib 来绘制点
plt.plot(x, y) 
plt.show()

np.arange()函数的本质是生成一个等间隔的数组,np.arange(1,11)即生成一个从1-11间隔为1的数组,上文的第三个参数0.1用于修改每个元素之间的大小,即横坐标轴间隙
y = np.sin(x)则是利用np自带的三角函数库来进行计算
plt.plot(x, y)实际上是接收了两个长度相同的一维数组进行绘图

语法学习-如何利用matplotlib生成多个函数图像

利用subplot()函数可以绘制多个图像,plt.subplot(2, 1, 2) 是用于创建一个带有子图的图形,并将当前的绘图区域设置为指定的子图。
subplot() 函数中,参数表示子图的行数、列数和当前子图的索引。具体解释如下:

  • 第一个参数 2 表示将整个绘图区域分为2行。
  • 第二个参数 1 表示将整个绘图区域分为1列。
  • 第三个参数 2 表示当前子图的索引,即选择第2个子图作为当前子图。

因此,plt.subplot(2, 1, 2) 的意思是在一个包含两个子图的图形中,将当前的绘图区域设置为第2个子图。

import numpy as np 
import matplotlib.pyplot as plt 
# 计算正弦和余弦曲线上的点的 x 和 y 坐标 
x = np.arange(0,  3  * np.pi,  0.1) 
y_sin = np.sin(x) 
y_cos = np.cos(x)  
# 建立 subplot 网格,高为 2,宽为 1  
# 激活第一个 subplot
plt.subplot(2,  1,  1)  
# 绘制第一个图像 
plt.plot(x, y_sin) 
plt.title('Sine')  
# 将第二个 subplot 激活,并绘制第二个图像
plt.subplot(2,  1,  2) 
plt.plot(x, y_cos) 
plt.title('Cosine')  
# 展示图像
plt.show()

bar()

pyplot 子模块提供 bar() 函数来生成条形图。

以下实例生成两组 xy 数组的条形图。

from matplotlib import pyplot as plt 
x = [5, 8, 10] 
y = [12, 16, 6] 
x2 = [6, 9, 11] 
y2 = [6, 15, 7] 
plt.bar(x, y, align='center') 
plt.bar(x2, y2, color='g', align='center') 
plt.title('Bar graph') 
plt.ylabel('Y axis') 
plt.xlabel('X axis') 
plt.show()

numpy.histogram()

numpy.histogram() 函数是用来对数据进行频率分布的图形表示。每个 bin 对应于一个类间隔,它的宽度是相等的,而高度对应于频率。

numpy.histogram() 函数接受输入数组和 bin 作为两个参数。bin 数组中的连续元素用作每个 bin 的边界。

import numpy as np 

a = np.array([22, 87, 5, 43, 56, 73, 55, 54, 11, 20, 51, 5, 79, 31, 27])
np.histogram(a, bins=[0, 20, 40, 60, 80, 100]) 
hist, bins = np.histogram(a, bins=[0, 20, 40, 60, 80, 100])  
print(hist) 
print(bins)

使用numpy.histogram()函数可以计算并绘制直方图。该函数接受两个参数,一个是数据数组,另一个是bin的边界数组。bin的边界数组决定了数据被分成的间隔。例如,如果bin的边界数组为[0, 20, 40, 60, 80, 100],则数据会被分成五个间隔:[0, 20)、[20, 40)、[40, 60)、[60, 80)、[80, 100)。

numpy.histogram()函数会返回两个数组,第一个数组是每个bin中数据的频率,第二个数组是bin的边界。

在示例代码中,先创建了一个包含15个数据的数组a,然后调用numpy.histogram()函数计算直方图,指定bin的边界为[0, 20, 40, 60, 80, 100]
计算结果存储在hist和bins中。最后打印输出hist和bins,可以看到每个bin中的频率和对应的边界。

11.30

Matplotlib大致掌握使用差不多就这么多,NumPy仅仅是初步了解我觉得应该已经够用了,在进一步接触深度学习或者是机器学习前应该不太需要深入了,现学现用应当已经满足要求,然后就是我有点想吃饭了(