将图像作为数组
本课属于 Coddy Machine Learning 学习旅程的“数据与图表”单元。第 29 课,共 60 课。
黑白照片是一个数字网格,每个像素对应一个亮度值。因此,2D 数组就是一张图像,而 ax.imshow 可以绘制它:
plus = np.array([[0, 0, 1, 0, 0],
[0, 0, 1, 0, 0],
[1, 1, 1, 1, 1],
[0, 0, 1, 0, 0],
[0, 0, 1, 0, 0]])
fig, ax = plt.subplots()
ax.imshow(plus, cmap="gray")
plt.show()cmap="gray" 选择灰度颜色映射:最小值为黑色,最大值为白色。第 0 行显示在顶部,与数组的排列顺序一致。
照片通常用 0(黑色)到 255(白色)来存储像素值。在接下来的学习过程中,模型会读取以这种方式存储的手写数字。
挑战
中等扫描仪读取了一封打印的字母,但将它以反色存储了:深色纸上的亮色墨水。嵌套列表 scan 保存了每个像素的亮度,范围为 0 到 255。
- 将
scan转换为数组并反转:每个像素都变为 255 减去它的值。 - 使用灰度色图绘制图像,标题设为
Letter E,然后显示图像。
你的图像应该和这个一样,修正后扫描出的 L:
你的程序不会打印任何内容。Coddy 会逐行描述你的图像。
亲手试试
import numpy as np
import matplotlib.pyplot as plt
scan = [[255, 255, 255, 255, 255],
[255, 30, 0, 0, 0],
[255, 0, 0, 0, 0],
[255, 255, 255, 200, 0],
[255, 0, 0, 0, 0],
[255, 0, 0, 0, 15],
[255, 255, 255, 255, 255]]
# 在下方编写代码
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
数据与图表中的所有课
自己练习: Python 在线编译器