How to install scipy and numpy on Ubuntu 16.04?

I'm trying to install scipy and numpy on Ubuntu 16.04 but I keep getting the following error. Can anyone tell me how to install the dependencies?

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 python-numpy : Depends: python:any (>= 2.7.5-5~)
 E: Unable to correct problems, you have held broken packages.

Solution 1:

You can also use pip (the alternative Python package installer) to install numpy and scipy for the whole system:

sudo apt-get install python-pip  
sudo pip install numpy scipy

This could install it regardless of dependency errors in the Ubuntu package manager.

Solution 2:

To install the dependencies in all currently supported versions of Ubuntu open the terminal and type the following commands:

sudo apt update  
sudo apt install --no-install-recommends python2.7-minimal python2.7  
sudo apt install python-numpy # in Ubuntu 20.04 and earlier
sudo apt install python-scipy # in Ubuntu 18.04 and earlier

For Python 3.x

sudo apt update  
sudo apt install --no-install-recommends python3-minimal python3  
sudo apt install python3-numpy python3-scipy

Solution 3:

In my case I wanted scipy installed into a virtual environment instead of globally. Installing libatlas-base-dev and gfortran prior to pip install resolved the issue:

sudo apt-get install libatlas-base-dev
sudo apt-get install gfortran
source .venv/bin/activate
pip install scipy