我正在使用 numpy 數組我遇到了障礙,也許你可以幫助我。所以我有一個二維 numpy 數組,這個二維數組中的每個數組都有一個最大值,我需要的是獲取最大值的索引而不是二維數組的索引,而是像使用一維數組一樣使用索引,我知道我可以用它numpy.argmax來查找索引,但索引是根據二維數組而不是一維數組,也許一個例子會更好:import numpy as nparr = np.array([[512, 523, 491], [512, 531, 495]])index = np.argmax(arr, axis = 1)index2 = np.argmax(arr)print(index)print(index2) index = [1, 1] index2 = 4我的意思是它做了它應該做的事情,但是如果我需要像一維數組一樣的索引怎么辦?這是我想要的輸出:index = [1, 4] 所以第一個最大值是 523,所以第一個索引是 1,第二個最大值是 531,所以第二個索引是 4,就像它是一維數組一樣。也許這是一個新手問題,但我不確定該怎么做,這只是一個例子,數組arr可以更大,所以,任何幫助將不勝感激,謝謝!
3 回答

慕虎7371278
TA貢獻1802條經驗 獲得超4個贊
我能想到的最簡單的事情就是為索引添加一個偏移量。
offset = np.arange(0,arr.shape[0]*arr.shape[1], arr.shape[1]) index1D = offset + index
對于上下文,np.arange 有 3 個參數:開始、停止和步幅。所以偏移量只是將特定行之前的元素總數添加到索引中。

交互式愛情
TA貢獻1712條經驗 獲得超3個贊
第一行實際上是你想要的。它返回每個嵌套數組中最大值的索引,即531
在第二個嵌套數組的索引 1 中。
您可以將其與高級索引一起使用
>>> print(arr[np.arange(arr.shape[0]), index]) [523, 531]
或者將索引更改為平面索引
flat_index = index + np.arange(0, arr.size, arr.shape[1]) # flat_index == [1, 4]

心有法竹
TA貢獻1866條經驗 獲得超5個贊
如果您知道二維數組的維度,則可以為每個元素添加偏移量。
例如
index = [1, 1]
offset = [0, 3]
index + offset
>>> [1, 4]
您可以通過執行很容易地獲得偏移量np.arange(len(index))*size。其中 size 是二維數組的寬度。
添加回答
舉報
0/150
提交
取消