Applying a mathematical function to a 16-bit Python array
If you're doing ANY audio signal processing in python, I heartily recommend librosa. Your scipy route will work (read as float, process, playback), but it is less direct. Also, I recommend sticking with float, as fixed-point work is more relevant if your code is running on an embedded/mobile system sans-FPU.

You can pip install librosa and get applying math functions quickly. Check out the introduction ipython notebook. Additionally, if you're doing more serious work, there is great integration with scikit-learn machine learning pipelines. 

To get you started your code might look like this:

import librosa
import numpy as np

# Load the example track
y, sr = librosa.load("myfile.wav")

# apply mathematical functions or processes to 'y' here:

# If you do this in an ipython notebook (highly recommended as a interactive python env), 
# you can play back in one line!
IPython.display.Audio(data=y, rate=sr)