图示效果图:
直接贴代码:
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行第2列,下标从0开始,所以图中表示第二个块的第三行;即为图中所示位置。
补充:三维数组的求和
多维数组的轴(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),每一个平面的每一行。
---------------------
原文:https://blog.csdn.net/mago2015/article/details/81069321