numpy中多維陣列的軸 axis

2021-08-31 01:44:54 字數 1443 閱讀 6182

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!

多維陣列的軸(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])>>> xarray([[[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]])
給我老師的人工智慧教程打call!

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

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