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