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

如何正确理解Numpy多维数组的shape属性?

Numpy多维数组shape的统一理解方式

首先明确:Numpy数组的shape元组逻辑是完全统一的——从轴0到轴n-1,依次对应数组从最外层到最内层的嵌套层级的元素数量,或者说,每个轴的数值代表「沿着该轴切片时,能得到的子数组的总数」。

对应你的两个例子:

1. 你构造的3D数组array_example

数组的嵌套结构是:

[
  # 轴0的3个元素(每个都是2行4列的二维数组)
  [ [0,1,2,3], [4,5,6,7] ],
  [ [0,1,2,3], [4,5,6,7] ],
  [ [0,1,2,3], [4,5,6,7] ]
]
  • 轴0(最外层):有3个二维数组,所以长度为3
  • 轴1(中间层):每个轴0的元素里有2个一维数组(行),所以长度为2
  • 轴2(最内层):每个轴1的元素里有4个数值,所以长度为4
    最终shape=(3,2,4),你理解的「轴0是3个矩阵」完全正确,因为沿轴0切片得到的就是3个二维矩阵。

2. 图像数组shape=(768,1024,3)

图像数组的嵌套结构对应像素的排列:

[
  # 轴0的768个元素(每一行)
  [ [R,G,B], [R,G,B], ... ],  # 轴1的1024个元素(每一列的像素)
  [ [R,G,B], [R,G,B], ... ],
  ...
]
  • 轴0:对应图像的行数,共768行,长度为768
  • 轴1:对应每行的像素数,共1024个,长度为1024
  • 轴2:对应每个像素的通道数(RGB),共3个,长度为3
    你提到的「最后一个元素表示3个形状为(768,1024)的数组」,本质是沿轴2切片得到的结果——取image[:,:,0]就是红色通道的二维图像,image[:,:,1]是绿色通道,image[:,:,2]是蓝色通道,这和你数组里沿轴0切片得到矩阵的逻辑完全一致,只是我们根据数据用途关注了不同的轴。

总结统一逻辑

不管数组代表什么业务数据,shape的每个数值都对应:

  • 数组嵌套层级从外到内的第i层的元素数量
  • 沿第i轴(axis=i)切片时,能得到的子数组的数量,每个子数组的shape就是原shape去掉第i个数值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 19:44:56