NumPy三维数组元素定位与轴(axis)求和解析

Jasper
Jasper
发布时间:2026-10-13 | 6人浏览过
原创

本文详解NumPy中三维数组的元素位置索引规则,通过创建3x5x6数组并赋值示例,解析通道、行、列的下标对应关系。同时深入讲解多维数组axis参数的含义,结合代码演示axis=0,1,2时的求和结果,适用于深度学习特征数据处理场景。

三维数组元素位置解析

在数据处理过程中,常需将二维数组批量嵌入三维数组。此类操作在深度学习特征处理中十分常见,掌握三维数组的元素位置至关重要。本文结合代码实例,详细梳理三维数组中元素的定位方法,便于后续查阅及解决相关疑问。

效果示意图如下:

具体代码实现如下:


def test3D():
 import numpy as np
 data_array = np.zeros((3, 5, 6), dtype=np.int)
 data_array[1, 2, 2] = 1
 
 print(data_array)

代码说明:利用np.zeros构建一个形状为3行5列6通道的三维数组,并将第二个通道第一行第二列的元素赋值为1。

运行结果截图如下:

结果分析:由运行结果可见,数组包含六个通道。在深度学习语境下,这六个通道对应六个Feature Map,即结果图中的六列数据。

进一步观察外层结构,共有三个区块,每个区块代表该通道对应的某一行数据。

每个区块内包含五行数据,每一行代表该通道下的某一列数据。

因此,代码中的赋值语句为:data_array[1, 2, 2] = 1

该语句表示:指定第2个通道(下标从0开始,故图中显示为第三列);第1行(下标从0开始,故图中显示为第二个区块的第三行);第2列(下标从0开始,故图中显示为第三列)。综合即为图中所示的具体位置。

三维数组axis求和详解

补充内容:三维数组的求和运算

多维数组的轴(axis)参数与该数组的size(或shape)元素一一对应。


>>> np.random.seed(123)
>>> X = np.random.randint(0, 5, [3, 2, 2])
>>> print(X)
 
[[[5 2]
 [4 2]]
 
 [[1 3]
 [2 3]]
 
 [[1 1]
 [0 1]]]
 
>>> X.sum(axis=0)
array([[7, 6],
  [6, 6]])
 
>>> X.sum(axis=1)
array([[9, 4],
  [3, 6],
  [1, 2]])
 
>>> X.sum(axis=2)
array([[7, 6],
  [4, 5],
  [2, 1]])

若将三维数组的每个二维切片视为一个平面(plane,如X[0, :, :], X[1, :, :], X[2, :, :]),则三维数组是由这些二维平面堆叠(stacked)而成。此时,axis=0表示所有平面上对应位置的求和,axis=1表示每个平面内每一列的求和,axis=2表示每个平面内每一行的求和。

以上关于NumPy三维数组元素位置及求和的解析即为全部内容,希望能为读者提供参考,并欢迎支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表