• idx3-ubyte 表示这是一个三维数组的 ubyte (unsigned byte) 格式数据(图片数据)。

  • idx1-ubyte 表示这是一个一维数组的 ubyte 格式数据(标签)。

train-images-idx3-ubyte 文件按照以下格式保存:

1.文件头

  • 前 4 个字节表示魔数 0x00000803(以小端字节序存储),表示 3 维数组的 ubyte 格式。

  • 接下来 4 个字节表示图像数量 60000

  • 再接下来 4 个字节表示行数 28

  • 最后 4 个字节表示列数 28

2.图像数据

  • 文件头之后的数据部分就是所有图像的像素值。

  • 每个图像的像素值是按照行优先的顺序依次存储的。

  • 每个像素值都是一个 8 位无符号整数(0-255)。

import struct
import numpy as np
import matplotlib.pyplot as plt

def load_mnist_images(filename):
    """
    读取 MNIST 图像文件并返回图像数据
    """
    with open(filename, 'rb') as f:
        # 读取文件头信息
        magic, num_images, rows, cols = struct.unpack('>IIII', f.read(16))
        print(f'文件头信息(10进制):{[magic,num_images,rows,cols]}')

        # 读取并解析图像数据
        images = np.fromfile(f, dtype=np.uint8).reshape(num_images, rows, cols)


    return images

if __name__ == '__main__':
    # 假设文件位于当前目录下
    filename = r'.\train-images-idx3-ubyte'

    # 查看一张图片, 设置 NumPy 数组的打印格式
    train_images = load_mnist_images(filename)
    np.set_printoptions(linewidth=200, formatter={'int':'{:3d} '.format})
    print(train_images[0])

    plt.imshow(train_images[0], cmap='gray')
    plt.show()

 打印结果

文件头信息(10进制):[2051, 60000, 28, 28]
[[  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0 ]
 [  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0 ]
 [  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0 ]
 [  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0 ]
 [  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0 ]
 [  0    0    0    0    0    0    0    0    0    0    0    0    3   18   18   18  126  136  175   26  166  255  247  127    0    0    0    0 ]
 [  0    0    0    0    0    0    0    0   30   36   94  154  170  253  253  253  253  253  225  172  253  242  195   64    0    0    0    0 ]
 [  0    0    0    0    0    0    0   49  238  253  253  253  253  253  253  253  253  251   93   82   82   56   39    0    0    0    0    0 ]
 [  0    0    0    0    0    0    0   18  219  253  253  253  253  253  198  182  247  241    0    0    0    0    0    0    0    0    0    0 ]
 [  0    0    0    0    0    0    0    0   80  156  107  253  253  205   11    0   43  154    0    0    0    0    0    0    0    0    0    0 ]
 [  0    0    0    0    0    0    0    0    0   14    1  154  253   90    0    0    0    0    0    0    0    0    0    0    0    0    0    0 ]
 [  0    0    0    0    0    0    0    0    0    0    0  139  253  190    2    0    0    0    0    0    0    0    0    0    0    0    0    0 ]
 [  0    0    0    0    0    0    0    0    0    0    0   11  190  253   70    0    0    0    0    0    0    0    0    0    0    0    0    0 ]
 [  0    0    0    0    0    0    0    0    0    0    0    0   35  241  225  160  108    1    0    0    0    0    0    0    0    0    0    0 ]
 [  0    0    0    0    0    0    0    0    0    0    0    0    0   81  240  253  253  119   25    0    0    0    0    0    0    0    0    0 ]
 [  0    0    0    0    0    0    0    0    0    0    0    0    0    0   45  186  253  253  150   27    0    0    0    0    0    0    0    0 ]
 [  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0   16   93  252  253  187    0    0    0    0    0    0    0    0 ]
 [  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  249  253  249   64    0    0    0    0    0    0    0 ]
 [  0    0    0    0    0    0    0    0    0    0    0    0    0    0   46  130  183  253  253  207    2    0    0    0    0    0    0    0 ]
 [  0    0    0    0    0    0    0    0    0    0    0    0   39  148  229  253  253  253  250  182    0    0    0    0    0    0    0    0 ]
 [  0    0    0    0    0    0    0    0    0    0   24  114  221  253  253  253  253  201   78    0    0    0    0    0    0    0    0    0 ]
 [  0    0    0    0    0    0    0    0   23   66  213  253  253  253  253  198   81    2    0    0    0    0    0    0    0    0    0    0 ]
 [  0    0    0    0    0    0   18  171  219  253  253  253  253  195   80    9    0    0    0    0    0    0    0    0    0    0    0    0 ]
 [  0    0    0    0   55  172  226  253  253  253  253  244  133   11    0    0    0    0    0    0    0    0    0    0    0    0    0    0 ]
 [  0    0    0    0  136  253  253  253  212  135  132   16    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0 ]
 [  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0 ]
 [  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0 ]
 [  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0 ]]

Logo

一站式 AI 云服务平台

更多推荐