Numpy: рдЕрдиреБрд░реЛрдз: argmax2d

рдХреЛ рдирд┐рд░реНрдорд┐рдд 21 рдЬреВрди 2017  ┬╖  13рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: numpy/numpy

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдПрдХ 2D рд╕рд░рдгреА рдкрд░ рдПрдХ argmax рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдлрд╝рдВрдХреНрд╢рди рдерд╛ рдФрд░ рдЕрдзрд┐рдХрддрдо рдХреА рдкрдВрдХреНрддрд┐ рдФрд░ рд╕реНрддрдВрдн рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

рдореИрдВ рдЕрдХреНрд╕рд░ рдЦреБрдж рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдкрд╛рддрд╛ рд╣реВрдВ

def argmax2d(X):
    n, m = X.shape
    x_ = np.ravel(X)
    k = np.argmax(x_)
    i, j = k // m, k % m
    return i, j

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЖрд╕рд╛рди рд╣реИ, рдЗрд╕рдХреА рдЕрдкрд╛рд░рджрд░реНрд╢реА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдЬрд╣рд╛рдВ рдореБрдЭреЗ рд▓рдЧрд╛рддрд╛рд░ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджреЗрдЦрдирд╛ рд╣реИред
рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА numpy рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдерд╛ред

рдХреНрдпрд╛ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░ рдЦреЛрд▓рдиреЗ рдореЗрдВ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рд╣реЛрдЧреА?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

np.unravel_index рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░реЗрдВ?

рдЬреИрд╕реЗ

np.unravel_index(X.argmax(), X.shape)

рдПрдХ рдмреЛрдирд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рддрдм рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм X рдореЗрдВ 2 рд╕реЗ рдЕрдзрд┐рдХ рдЖрдпрд╛рдо рд╣реЛрддреЗ рд╣реИрдВред

рд╕рднреА 13 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

np.unravel_index рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░реЗрдВ?

рдЬреИрд╕реЗ

np.unravel_index(X.argmax(), X.shape)

рдПрдХ рдмреЛрдирд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рддрдм рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм X рдореЗрдВ 2 рд╕реЗ рдЕрдзрд┐рдХ рдЖрдпрд╛рдо рд╣реЛрддреЗ рд╣реИрдВред

argmax2d рдХрд╛ рдкреНрд░рд╢рдВрд╕рдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ i, j = a.argmax(axis=(0, 1)) рджреНрд╡рд╛рд░рд╛ рдордирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

@ рдПрд░рд┐рдХ-рд╡рд╛рдЗрд╕рд░ рдЖрдк рдХреИрд╕реЗ рдХрд╣реЗрдВрдЧреЗ рдХрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рд╡рд░реНрддрдорд╛рди рдореЗрдВ a.argmax() рдПрдХ рдЕрджрд┐рд╢ рджреЗрддрд╛ рд╣реИ, рдФрд░ a.argmax(axis=0) рд╢реЗрд╖ рдЖрдпрд╛рдореЛрдВ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИред рдореИрдВ a.argmax(axis=(0,1)) рдЖрдХрд╛рд░ рдХреА рдПрдХ рд╕рд░рдгреА рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ 3 рдбреА рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП a.shape[2] рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реВрдВред

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдПрдХ рддрд░рдл рд╣реИ, рддреЛ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рдореЗрдВ n рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП a.argmax(axis=range(n)) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рд╣реЛрдЧрд╛ - рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреВрд░реНрдгрд╛рдВрдХ рд░реИрдЦрд┐рдХ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рдмрдЬрд╛рдп рд▓рдВрдмрд╛рдИ рд╕реВрдЪрдХрд╛рдВрдХ рдЯрдкрд▓ред рд╢рд╛рдпрдж рдПрдХ рдирдпрд╛ рдХреАрд╡рд░реНрдб рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рд╕реНрддреБрддрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рддреЛ рдлрд┐рд░, рдпрд╣ рдЖрдХрд╛рд░-рдЬрд╛рдЧрд░реВрдХ рдкрд░рд┐рдгрд╛рдо рд╡рд┐рдХрд▓реНрдк рдореМрдЬреВрджрд╛ axis рдХреАрд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЧреИрд░-рд╕реНрдХреЗрд▓рд░ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рд╣реИ?

рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдкрдХреЗ 2 рдбреА рд╕рд░рдгреА рдореЗрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЕрдзрд┐рдХрддрдо рдирд╣реАрдВ рд╣реИ (рдпрд╣ рдХреЗрд╡рд▓ рд╕реНрдерд┐рд░ рд╕рд░рдгреА рд╣реИ) - рдХреИрд╕реЗ argmax рдЗрд╕рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

# setup the problem
import numpy as np
x=np.arange(10).reshape([2,5])
x[1,3]=2
# x is this:
# [[0, 1, 2, 3, 4],
#  [5, 6, 7, 2, 9]]

# this will behave normally
np.argmax(x==2, axis=1)
# Out: [2,3]

# but this one returns 0 instead of NaN
np.argmax(x==3, axis=1)
# Out: [3,0]
# Expected: [3, nan]

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реНрдХ рджреЗрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдпрд╣ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рджреЗрдВ рдХрд┐ рдЕрдзрд┐рдХрддрдо рдЙрдкрд▓рдмреНрдз рди рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ: np.argmax(x,axis,no_ind=0) (0 рдкрд┐рдЫрдбрд╝реА рд╕рдВрдЧрддрддрд╛ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИ)ред

@ thoth291 рдХреНрдпрд╛ рдпрд╣ argmax рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╢реНрди рдирд╣реАрдВ рд╣реИ? 1d рд╕рд░рдгреА рдкрд░ рдХреЛрдИ axis рдХреАрд╡рд░реНрдб рддрд░реНрдХ рдХреЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рд╣реЛрддрд╛ рд╣реИ:

>>> np.argmax([2,2,2])
0

рдФрд░ рд╕рдВрдмрдВрдзреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдкреНрд░рдерд╛рдЧрдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ: рдмрдВрдзреЗ рд╣реБрдП рдореВрд▓реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдкрд╣рд▓рд╛ рдЪреБрдиреЗрдВред рдЗрд╕реА рддрд░рд╣ рдЙрд╕ рд╕рд░рдгреА рдХрд╛ max рдХреИрд╕реЗ рдирд╣реАрдВ рд╣реИ nan : рдпрд╣ 2 рд╣реИред рдФрд░ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдзрд┐рдХрддрдо рд╣реИ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╛ рдореБрдЭреЗ рддреБрдореНрд╣рд╛рд░реА рдмрд╛рдд рдпрд╛рдж рдЖрдИ?

@adeak , рдЕрдм рдЖрдкрдиреЗ рдХрд╣рд╛ рдХрд┐ - рдореИрдВ рдпрд╣ рд╕реЛрдЪрдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╢реНрди рд╣реИред
рдореИрдВ рд╕рд╣рдордд рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ max([2,2,2]) 2 рдмрд░рд╛рдмрд░ рд╣реИред
рд▓реЗрдХрд┐рди argmax([2,2,2]) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ - numpy рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдпрд╣ the indices corresponding to the first occurrence рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдареАрдХ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ - рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХрд╛ рд╕рд┐рд░реНрдл рдПрдХ рдкреБрд░рд╛рддрдирд╡рд╛рдж рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рднреА рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рд╣реА рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╛ рдХреЛрдИ рдХрд╣ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдирд┐рд░рдВрддрд░-рдореВрд▓реНрдпрд╡рд╛рди рд╕рд░рдгреА рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ argmax рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИред

рдпрд╣ рд╕рдм рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдореИрдВ рдкрд╣рд▓реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдирд┐рд░реНрдгрдп рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдФрд░ inf рдХреЛ рдпрд╣ рд╕рдВрдХреЗрдд рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдХрд░ рджреВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ рдХрд┐ рд╡рд╣ рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╛рдорд▓реЗ рдХрд╛ рдЗрд▓рд╛рдЬ рдХреИрд╕реЗ рдХрд░реЗред

рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬреЛ рд╣реЛрддрд╛ рд╣реИ рдЙрд╕рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред

рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдорддрд▓рдм рд╣реИ "рдЖрд░реНрдЧрдореИрдХреНрд╕ рдХреА рдЕрдореВрд░реНрдд рдкрд░рд┐рднрд╛рд╖рд╛ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛ рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИ"? рдореБрдЭреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ _"рдПрд▓реНрдЧреЛрд░рд┐рджрдо"_ рдФрд░ _"рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ"_ рди рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдЪреАрдЬрд╝ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдпрд╣ рдХрд┐ рд╡реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВред

@adeak : рдХрднреА рдЬрд╡рд╛рдм рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ

рдлрд┐рд░, рдпрд╣ рдЖрдХрд╛рд░-рдЬрд╛рдЧрд░реВрдХ рдкрд░рд┐рдгрд╛рдо рд╡рд┐рдХрд▓реНрдк рдореМрдЬреВрджрд╛ рдЕрдХреНрд╖ рдХреАрд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЧреИрд░-рд╕реНрдХреЗрд▓рд░ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рд╣реИ?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рддреМрд░ рдкреЗ:

>>> ret = argmax(np.empty((A, B, C, D, E)), axes=(0, 2))
>>> type(ret)
tuple
>>> len(ret)  # == len(axes)
2
>>> ret[0].shape
(B, D, E)
>>> ret[1].shape
(B, D, e)

рдЙрд╕ рдФрд░ рдХреАрдкрдбрд┐рдореНрд╕ рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдЖрдпрд╛рдо рдХреЗ рд▓рд┐рдП arr[argmax(arr, axes, keepdims=True)] == max(arr, keepdims=True) рдорд┐рд▓реЗрдЧрд╛, рдЬреЛ рдореБрдЭреЗ рдЕрддрд┐-рд╡рд╛рдВрдЫрдиреАрдп рд▓рдЧрддрд╛ рд╣реИ

рдЫрджреНрдо рдХреЛрдб рдореЗрдВ, рдореИрдВ рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реВрдВ:

def argmax(arr, axes, keepdims)
    was_tuple = isinstance(axes, tuple):
    if not was_tuple:
        axes = (axes,)

    shape = np.array(arr.shape)
    axis_mask = np.array([i in axes for i in range(arr.ndim)])
    shape[axis_mask] = 1
    ret = tuple(np.empty(shape) for _ in axes)

    # do the actual work

    if not keepdims:
        ret = tuple(r.reshape(shape[~axis_mask]) for r in ret)

    if not was_tuple:
        return ret[0]

@ рдПрд░рд┐рдХ-рд╡рд╛рдЗрд╕рд░ - рдЕрдЪреНрдЫреА рдкрдХрдбрд╝ - рдореИрдВрдиреЗ рдЗрд╕реЗ рдареАрдХ рд╕реЗ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬрд╝реА рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ред рдмрд╛рдж рдореЗрдВ рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВрдЧреЗред рдЯрд┐рдкреНрдкрдгреА рдХреЛ "рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП" рдХреЗ рдмрдЬрд╛рдп "рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП" рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ - рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ред
рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ argmax([2,2,2])==0 argmax([2,2,2])==1 рдпрд╛ рдХреБрдЫ рдФрд░ рдЬрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдмрдЬрд╛рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЪреБрдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдиреНрдпрдерд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдЕрддрд┐рд░рд┐рдХреНрдд рдХреАрд╡рд░реНрдб default= рдпрд╛ initial= рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдлрд╝реЙрд▓рдмреИрдХ рддрдВрддреНрд░ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдирд┐рд░реНрджреЗрд╢ рджреЗрдЧрд╛ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреНрдпрд╛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╣реИред

@ thoth291 : рдЪреВрдВрдХрд┐ рдЖрдк рдЬреЛ рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ _2D_ argmax рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдмрдирд╛рдПрдВ

@ eric-wieser рдХреЛрдИ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд╛рдкрд╕ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЖрдкрдХрд╛ рд╕реБрдЭрд╛рд╡ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдФрд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ axis рддрд░реНрдХ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдПрдХ рд╕рд░рдгреА рд╣реИ рдпрд╛ рд╕рд░рдгреА рдХрд╛ рдПрдХ рдЯрдкрд▓ рдореЗрд░реЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реИ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ axes=0 рдмрдирд╛рдо axes=[0] ), рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдПрдХ рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдореМрдЬреВрджрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ (рднреА, рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХрддрд╛ рд╢реБрджреНрдзрддрд╛ рдХреЛ рд╣рд░рд╛ рджреЗрддреА рд╣реИ)ред

~ рдмрд╕ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП: рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдпрджрд┐ axes=(0,2) рддреЛ рд▓реМрдЯрд╛рдИ рдЧрдИ рдЖрдХреГрддрд┐рдпрд╛рдБ (B,D,E) рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рд╣реИ рдирд╛?

рдмрд╕ рддрд╕рд▓реНрд▓реА рдХреЗ рд▓рд┐рдП

рджреЛрдиреЛрдВ рд╕рд╣реА, рдЕрдЪреНрдЫрд╛ рдХреИрдЪ

рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЕрдХреНрд╖ рддрд░реНрдХ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдПрдХ рд╕рд░рдгреА рд╣реИ рдпрд╛ рд╕рд░рдгреА рдХрд╛ рдПрдХ рдЯрдкрд▓ рдореЗрд░реЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реИ

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рд░рдгреА рд╕рдорд╛рди рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХрддрд╛ рдФрд░ рд╢реБрджреНрдзрддрд╛ рджреЛрдиреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ - рдирд┐рдпрдо рдпрд╣ рд╣реИ рдХрд┐ axis=(a,) тЖТ res = (arr,) рдФрд░ axis=a тЖТ res = arr ред рдПрдкрд┐рд╕ рдХрд┐ рдЖрдХрд╛рд░ 1 рдХреЗ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдЯреБрдкрд▓реНрд╕ рдиреЗ рдореБрдЭреЗ рдПрдХ рдмреБрд░реЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рд░рд╛, рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕ рд╡рд┐рд╢реЗрд╖ рдЖрд╡рд░рдг рдХреЛ рдкреВрд░реЗ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреЛ рд╕рдВрдХреНрд░рд╛рдордХ рдмрдирдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ

рдореИрдВрдиреЗ рдХрднреА рд╡рд┐рд╢реЗрд╖-рдХреЗрд╕ рд▓рдВрдмрд╛рдИ -1 рдЯреБрдкрд▓реНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдЧрд▓рдд рд▓рдЧрддрд╛ рд╣реИред рдореИрдВ рдЕрджрд┐рд╢ рдмрдирд╛рдо рдЯрдкрд▓ рдорд╛рдорд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╣реБрдЖ рдерд╛ рдХрд┐ рд╕реНрдХреЗрд▓рд░ рдФрд░ рд▓рдореНрдмрд╛рдИ -1 рдЯреБрдкрд▓ рдорд╛рдорд▓реЗ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдП рдЧрдП рддрд░реАрдХреЗ рд╕реЗ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдм рдЬрдм рдЖрдкрдиреЗ рдЗрд╕реЗ рд▓рд┐рдЦрд╛ рд╣реИ рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╕реНрдХреЗрд▓рд░ -> 1-рдЯреБрдкрд▓ -> рд╕рд╛рдорд╛рдиреНрдп рдЯреНрдпреВрдкрд▓ рдорд╛рдорд▓реЗ рд╕реАрдзреЗ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рд╣реИрдВред рддреЛ рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рдХрд╛ рдкреВрд░реНрдг рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реВрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

kevinzhai80 picture kevinzhai80  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

perezpaya picture perezpaya  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dmvianna picture dmvianna  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Foadsf picture Foadsf  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

MareinK picture MareinK  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ