在numpy中關於axis的軸有時會有點暈,這裡做下總結
如果axis=0,表示0軸,第乙個維度
axis=1,表示1軸,第二個維度
有點抽象
本地使用jupyter,設沒注釋的為**輸入,注釋部分為輸出
二維
import numpy as np
a = np.array([[
1,2,
3],[
4,5,
6]])
a# array([[1, 2, 3],
# [4, 5, 6]])
a.shape
# (2, 3)
# 表示第一維維度為2,第二維維度維3
a.sum()
# 21
a.sum
(axis=0)
# array([5, 7, 9]) shape為(3,)
a.sum
(axis=
0, keepdims=
true
)# 加上keepdims後保持原有部分維度
# array([[5, 7, 9]]) shape為(1,3)
a.sum
(axis=1)
# array([ 6, 15]) shape為(2,)
a.sum
(axis=
1, keepdims=
true
)# array([[ 6],
# [15]]) shape為(2,1)
三維
b = np.array([[
[1,2
,3],
[4,5
,6]]
,[[7
,8,9
],[10
,11,12
]]])
b# array([[[ 1, 2, 3],
# [ 4, 5, 6]],
## [[ 7, 8, 9],
# [10, 11, 12]]])
b.shape
# (2, 2, 3)
# 第一維維度為2,第二維維度為2,第三維維度為3
b.sum
(axis=0)
# array([[ 8, 10, 12],
# [14, 16, 18]])
b.sum
(axis=1)
# array([[ 5, 7, 9],
# [17, 19, 21]])
b.sum
(axis=1)
# array([[ 6, 15],
# [24, 33]])
b.sum
(axis=(0
,1))
# array([22, 26, 30])
按照二維時的思路
看公式還是有點抽象,畫個圖吧
axis=0,相當於是將0軸方向上的進行求和
在三維情況下也是符合的(大於三維畫不出來)
畫了圖後清晰的了解了軸,然後取argmax也更清楚
a = np.array([[
1,5,
3],[
4,2,
6]])
a# array([[1, 5, 3],
# [4, 2, 6]])
a.shape
# (2, 3)
np.argmax(a)
# 5np.argmax(a, axis=0)
# 在0軸方向上找最大值的下標
# array([1, 0, 1], dtype=int64)
np.argmax(a, axis=1)
# array([1, 2], dtype=int64)
b = np.array([[
[1,5
,8],
[4,11
,6]]
,[[7
,3,10
],[9
,2,12
]]])
b# array([[[ 1, 5, 8],
# [ 4, 11, 6]],
# [[ 7, 3, 10],
# [ 9, 2, 12]]])
np.argmax(b)
# 11
np.argmax(b, axis=0)
# array([[1, 0, 1],
# [1, 0, 1]], dtype=int64)
np.argmax(b, axis=1)
# array([[1, 1, 0],
# [1, 0, 1]], dtype=int64)
np.argmax(b, axis=2)
# array([[2, 1],
# [2, 2]], dtype=int64)
numpy中的axis(軸的理解)
沿著axis指定的軸進行相應的函式操作。如果不知道axis,則把結構體展開成一維,然後再開始計算 import numpy as np print array x x 1,2,3 5,1,2 x np.array x print x print shape x print x.shape print...
numpy 維度與軸
albert chen albert chen 的個人部落格 發表於 2016 09 01 分類於程式語言 我知道 numpy 是多維陣列,但是一直不理解其軸 axis 的概念,以及基於軸之上的計算。今天寫了些例項終於理解了。首先是維度,對人來說高維空間是很難想象的,但是我們可以從純數學的角度來看。...
numpy 維度與軸的問題
x np.reshape np.arange 24 2,3,4 也即 2 行 3 列的 4 個平面 plane x array 0,1,2,3 4,5,6,7 8,9,10,11 12,13,14,15 16,17,18,19 20,21,22,23 再來分別看每乙個平面的構成 x 0 array ...