Unfortunately, Linux distributions rarely support install as non-root, so your only solution is almost always to install from sources. For python >= 2.6, the easiest solution is the --user option:
python setup.py install --user
This will install numpy in $HOME/.local, and python automatically looks there for packages. You're done.
For python < 2.6, you may recreate a local hierarchy in your home directory (/home/joe/local/bin for binaries, /home/joe/local/lib for libraries, etc...), and install numpy in this hierarchy:
python setup.py install --prefix=$HOME/local
In that case, you need to tell python to look in $HOME/local, though. This can be controled by the PYTHONPATH variable. If your shell is bash (the default shell on most linux distributions), add this line in your .bashrc:
export PYTHONPATH=$HOME/local/lib/python2.5/site-packages:$PYTHONPATH
(of course, adapt the python version if necessary). Then, numpy will be available in any newly created shell, i.e.:
python -c "import numpy; print numpy.__file__"
should work and print something like /home/joe/local/lib/python2.5/site-packages/numpy/init.pyc.