NumPy三维数组元素定位与轴(axis)求和解析
本文详解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三维数组元素位置及求和的解析即为全部内容,希望能为读者提供参考,并欢迎支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









