1. 程式人生 > 程式設計 >numpy中三維陣列中加入元素後的位置詳解

numpy中三維陣列中加入元素後的位置詳解

今天做資料處理時,遇到了從三維陣列中批量加入二維陣列的需求。其中三維陣列在深度學習的特徵資料處理時經常會使用到,所以讀者有必要對該小知識點做到清楚瞭解並掌握。現對三維陣列中的元素位置結合程式碼做詳細歸納總結,方便日後查閱和為網友答疑!

圖示效果圖:

直接貼程式碼:

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] = 1

表示為第2個通道,下標從0開始,所以在圖中位置為第三列;第1行第2列,下標從0開始,所以圖中表示第二個塊的第三行;即為圖中所示位置。

補充:三維陣列的求和

多維陣列的軸(axis=)是和該陣列的size(或者shape)的元素是相對應的;

>>> np.random.seed(123)
>>> X = np.random.randint(0,[3,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],[1,2]])
 
>>> X.sum(axis=2)
array([[7,[4,5],[2,1]])

如果將三維陣列的每一個二維看做一個平面(plane,X[0,:,:],X[1,X[2,:]),三維陣列即是這些二維平面層疊(stacked)出來的結果。則(axis=0)表示全部平面上的對應位置,(axis=1),每一個平面的每一列,(axis=2),每一個平面的每一行。

以上這篇numpy中三維陣列中加入元素後的位置詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。