numpy数组shape参数对应行列数与打印显示效果疑问
第一个问题解释
你对高维数组的维度定义理解有误,行和列的概念只适用于二维数组,numpy数组的shape参数是按**轴0→轴1→轴2……**的顺序依次表示每个维度的长度:
你调用np.indices((m,n))得到的ind是三维数组,shape (2, 493, 452)对应的含义是:
- 轴0长度为2:包含两个独立的二维矩阵,分别是图像所有位置的「行坐标矩阵」和「列坐标矩阵」
- 轴1长度为493:对应二维矩阵的行数,和你传入的m值(图像高度)一致
- 轴2长度为452:对应二维矩阵的列数,和你传入的n值(图像宽度)一致
你打印时看到的多行结构,就是轴0对应的两个二维矩阵的内容可视化,你以为的「只有2行」实际是轴0的长度,指的是有2个完整的二维矩阵,不是二维数组概念里的2行。
第二个问题解释
你的理解是对的。ind.resize((2, m*n))操作把三维数组拍平成了二维数组,shape (2, 222836)就是标准的二维数组结构:
- 轴0长度为2,即2行,分别对应所有像素的行坐标序列、列坐标序列
- 轴1长度为
493*452=222836,即222836列,每一列对应原图像中一个像素的(行坐标,列坐标)组合。
内容的提问来源于stack exchange,提问作者srv_77
相关产品推荐
相关产品推荐

