Your method seems ok, but you're computing a lot of intermediate results you don't need. You can do something like:
import numpy as np
def argmax(array):
shape = array.shape
array = array.reshape((shape[0], -1))
ravelmax = np.argmax(array, axis=1)
return (np.arange(shape[0]),) + np.unravel_index(ravelmax, shape[1:])