You could use the __getitem__ magic method directly to get the same functionally, but with easier support for dynamic arguments. Here is an example that uses the itertools package:
def get(matrix, axis, index):
return a.__getitem__(tuple(chain(repeat(slice(None), axis), (index,))))
This creates a tuple with a slice object that represents the colon in a[:] repeated axis times with index at the end. I think the tuple generation could be cleaned up, but I can't think of a cleaner way at the moment.
An example usage would be this:
a = np.arange(9).reshape(3, 3) # [[0 1 2], [3 4 5], [6 7 8]]
get(a, axis=0, index=0) # [0 1 2]
get(a, axis=1, index=0) # [0 3 6]
get(a, axis=0, index=1) # [3 4 5]
get(a, axis=1, index=1) # [1 4 7]