2 回答

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊
無(wú)論軸號(hào)如何,np.min和的處理都是相同的。argmin0 并不意味著比 1 或 2 更特殊的東西。在所有情況下,指定的軸都會(huì)從結(jié)果中刪除(與 相同np.sum)。
讓我們做一些更隨機(jī)、更有趣的事情:
In [216]: arr = np.arange(24)
In [218]: np.random.shuffle(arr)
In [219]: arr
Out[219]:
array([10, 2, 12, 11, 15, 8, 17, 20, 13, 21, 14, 1, 22, 7, 3, 5, 9,
0, 19, 16, 18, 6, 23, 4])
In [220]: arr = arr.reshape(2,3,4)
In [221]: arr
Out[221]:
array([[[10, 2, 12, 11],
[15, 8, 17, 20],
[13, 21, 14, 1]],
[[22, 7, 3, 5],
[ 9, 0, 19, 16],
[18, 6, 23, 4]]])
使用axis=0,確定每個(gè)“行/列”元素的哪個(gè)“平面”具有最小值。
In [222]: np.min(arr, axis=0)
Out[222]:
array([[10, 2, 3, 5],
[ 9, 0, 17, 16],
[13, 6, 14, 1]])
In [223]: np.argmin(arr, axis=0)
Out[223]:
array([[0, 0, 1, 1],
[1, 1, 0, 1],
[0, 1, 0, 0]])
argmin值是大小為 2 的維度的值索引值。10位于第一個(gè)平面, 位于3第二個(gè)平面,依此類推。
對(duì)軸 2(行)做同樣的事情:
In [224]: np.min(arr, axis=2)
Out[224]:
array([[2, 8, 1],
[3, 0, 4]])
In [225]: np.argmin(arr, axis=2)
Out[225]:
array([[1, 1, 3],
[2, 1, 3]])
位于2第二列、1第四列等。
使用它argmin來(lái)獲取min值需要熟悉高級(jí)索引:
In [226]: arr[[[0],[1]], [0,1,2], _225] # Out[225] argmin
Out[226]:
array([[2, 8, 1],
[3, 0, 4]])
這里我使用 (2,1) 和 (3,) 數(shù)組(或可以制成數(shù)組的列表),它們將一起廣播以匹配 (2,3) 索引argmin。他們一起從 (2,3,4) 形狀中選取一個(gè) (2,3) 值數(shù)組arr。
一個(gè)新的功能take_along_axis應(yīng)該會(huì)讓應(yīng)用更argmin容易。它有一個(gè)例子。此處應(yīng)用:
In [236]: idx = _225
In [237]: np.take_along_axis(arr, idx[...,None], axis=2)
Out[237]:
array([[[2],
[8],
[1]],
[[3],
[0],
[4]]])
這是Out[224] np.min展開為 3d (2,3,1) 形狀的數(shù)組。在顯示中挑選出最少的元素可能會(huì)更容易Out[221]。
In [238]: idx[...,None]
Out[238]:
array([[[1],
[1],
[3]],
[[2],
[1],
[3]]])

TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊
看來(lái)我也無(wú)法完全理解這些符號(hào),因?yàn)槲铱偸前l(fā)現(xiàn)自己將最后一個(gè)軸與最后一個(gè)軸之前的軸混淆了:
2D模型(行-列)
np.argmin
不幸的是,不同軸的結(jié)果是:
np.argmin(arr, axis=0) np.argmin(arr, axis=1) [0 0 1] [0 2]
3D模型(水平-行-列)
這也很接近:
np.argmin(arr, axis=0) np.argmin(arr, axis=1) np.argmin(arr, axis=2) [0 0] [0 1] [0 1] [1 0] [1 1] [0 0]
再說(shuō)一次,除了axis=1
與 交換之外,這工作得很好axis=2
。
我不知道這個(gè)神奇的交換從何而來(lái),但希望這個(gè)圖像有助于OP理解軸如何與維度聯(lián)系起來(lái)。
如果有人能評(píng)論為什么我需要特別應(yīng)用規(guī)則,那就太好了Swap last two axes of your expected output
。
添加回答
舉報(bào)