numpyの多次元配列で行や列を無視して最大の値を持つインデックスを返す方法はありませんか?

例えば
a = np.array([[1,1,1],[1,10,1],[1,1,5]])
に対して
x = f(a)
の結果が
(1,1)
と出てくれる関数を探しています。
ちなみに、
x = f(a, 2)
とn番目に大きいものも取得出来てこの結果が
(2,2)
と出てくれたら更に嬉しいです。