Python中三維陣列位置詳解
阿新 • • 發佈:2019-01-13
圖示效果圖:
直接貼程式碼:
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