numpy中多維陣列的軸(axis)

2021-07-09 10:59:50 字數 1408 閱讀 8667

多維陣列的軸(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.dot(a, b, out=none)
>>> x.dot([1, 1])

array([[7, 6],

[4, 5],

[2, 1]])

# x的最後一軸是每乙個二維的行方向

此時如果我們想通過矩陣與向量(一維)內積的方式實現(np.sum(x, axis=0)的結果)需使用np.tensordots(x, [1, 1, 1], axes=([0], [0])),具體的用法見 np.tensordots文件。

>>> np.tensordots(x, [1, 1, 1], axes=([0], [0]))

array([[7, 6],

[6, 6]])

我們再來看看如何實現多維陣列求平均的動作(每乙個二維平面對應位的平均):

>>> x = np.random.randint(0, 5, [3, 2, 2])

>>> x

array([[[3, 4],

[2, 2]],

[[3, 4],

[2, 3]],

[[2, 1],

[1, 3]]])

>>> np.tensordot(x, [1/3, 1/3, 1/3], axes=([0], [0]))

array([[ 2.66666667, 3. ],

[ 1.66666667, 2.66666667]])

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...

Numpy多維陣列的軸對換 transpose

轉置中,transpose方法返回的是源資料的檢視,就是說修改了檢視就會把源資料也改了。高維陣列,transpose的方法如下展示 建立乙個形狀為 2,2,4 的三維陣列 arr np.arange 16 reshape 2,2,4 arr array 0,1,2,3 4,5,6,7 8,9,10,...