With the invariant that:
a = np.random.random(shape)
inds = ...
axis = ...
# copy some values from a to b
b = np.ones(a.shape) * np.nan
vals = np.take(a, inds, axis=axis)
np.put(b, inds, vals, axis=axis)
# check that the copy worked
assert_equal(vals, np.take(b, inds, axis=axis))