對多維陣列計算中axis的理解

2021-10-06 14:31:15 字數 1091 閱讀 2121

以tf.reduce_mean()為例

我這種理解其實就是對於上面加粗的對應元素的擴充套件,二維時候是axis=0是每行的第乙個元素求均值、第二個元素……,axis=1是每列的第乙個元素求均值,第二個元素……

擴充套件到多維其實也是一樣,我把多維矩陣理解成乙個樹狀圖,首先還是以簡單的二維矩陣為例

這樣乙個矩陣,其實也可以用下面的形式表示

根節點表示該矩陣,根節點下面的一行(本文中稱為第一行)表示行維度的兩個元素,行維度的元素可以看做是向量,每個向量又包含兩個列維度的元素。這樣的話,如果令axis=0,計算每行中第乙個元素的均值就是下圖這樣:

有了上面的鋪墊,我們就可以向更高維拓展,比如我們構造乙個2x2x2x2的四維矩陣,如下圖所示。其中為了方便畫圖和理解,我把最後兩維簡化成二維矩陣的形式。

axis=0和上面類似,所以我們來看一下axis=1的情況:

這裡值得注意的是計算第乙個對應元素時僅取樹的左半邊,即不會跨兩層進行計算,保持了上一層的維度。可以想象如果將右半部分也計算進來,最後的結果就只剩乙個二維矩陣了。

import tensorflow as tf

import numpy as np

x = np.array(

range(16

)).reshape([2

,2,2

,2])

a = tf.convert_to_tensor(x)

print

("原矩陣:"

,a)b = tf.reduce_mean(a, axis=1)

print

("\naxis=1求均值:"

,b)

numpy中多維陣列的軸(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....

numpy中多維陣列的軸 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.s...

numpy中多維陣列的軸(axis)

分享一下我老師大神的人工智慧教程。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!多維陣列的軸 axis 是和該陣列的size 或者shape 的元素是相對應的 np.random.seed 123 x np.random.randint 0,5,3,2,2 print...