Saya memiliki array NumPy 2 dimensi. Saya tahu cara mendapatkan nilai maksimum dari sumbu:
>>> a = array([[1,2,3],[4,3,1]])
>>> amax(a,axis=0)
array([4, 3, 3])
Bagaimana saya bisa mendapatkan indeks elemen maksimum? Jadi saya ingin sebagai keluaranarray([1,1,0])
sumber
a = np.array([[1,4,3],[4,3,1]])
untuk melihat bahwa ia kembalii,j==0,1
, dan mengabaikan solusi dii,j==1,0
. Untuk indeks dari semua penggunaan maksimal sebagai gantinyai,j = where(a==a.max()
.argmax()
hanya akan mengembalikan kemunculan pertama untuk setiap baris. http://docs.scipy.org/doc/numpy/reference/generated/numpy.argmax.htmlJika Anda perlu melakukan ini untuk array berbentuk, ini berfungsi lebih baik daripada
unravel
:Anda juga dapat mengubah kondisi Anda:
Di atas memberi Anda hasil dalam formulir yang Anda minta. Alternatifnya, Anda dapat mengonversi ke daftar koordinat x, y dengan:
sumber
indices = np.where(a==a.max())
di baris 3?.max()
bukan.argmax()
. Harap edit jawabannyax_y_coord = [(0, 2), (1, 1)]
yang TIDAK cocok dengan jawaban @eumiro, dan salah. Misalnya, coba dengana = array([[7,8,9],[10,11,12]])
untuk melihat bahwa kode Anda tidak memiliki hit pada input ini. Anda juga menyebutkan bahwa ini bekerja lebih baik daripadaunravel
, tetapi solusi yang diposting oleh @blas menjawab masalah maksimum absolut, bukan hanya sepanjang satu sumbu.sumber