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 |
+ | 加号标记 |
x | X 标记 |
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()
函数来生成条形图。
以下实例生成两组 x
和 y
数组的条形图。
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仅仅是初步了解我觉得应该已经够用了,在进一步接触深度学习或者是机器学习前应该不太需要深入了,现学现用应当已经满足要求,然后就是我有点想吃饭了(
插眼