You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Matplotlib手写数字可视化代码中width是数组第一维度?

问题解答

核心原因是你用到的MNIST手写数字数据集的图像都是28×28的等宽高正方形灰度图,原代码的变量命名错误刚好被正方形的特性掩盖了,所以两个版本输出一致。

具体解释

  • 你的认知完全正确:Python中用numpy数组存储单通道灰度图时,img.shape的返回顺序固定为(高度, 宽度),对应数组的(行, 列)维度,你修改后的height, width = img.shape是符合规范的正确写法。
  • 原作者的代码属于变量命名失误:他误将第一维度(实际是图像高度)赋值给了width变量,第二维度(实际是图像宽度)赋值给了height变量。但因为MNIST图像是正方形,高度和宽度的数值完全相等,后续的循环for x in range(width)和for y in range(height)本质都是遍历28次,循环逻辑、索引取值、标注坐标的对应关系都不会出错,因此你看不到输出差异。
  • 验证方法:你可以找一张非正方形的单通道灰度图(比如32×64的长方形图像)运行原作者的代码,会立刻出现标注错位、甚至数组索引越界的报错,就能直观看到原代码的命名问题。

内容的提问来源于stack exchange,提问作者R__

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 15:48:01