Broadcasting NumPy arrays
NumPy attempts to execute a procedure even though the operands do not have the same shape.
In this recipe, we will multiply an array and a scalar. The scalar is broadened to the shape of the array operand and then the multiplication is executed. The process described here is called
broadcasting. The following is the entire code for this recipe (refer to broadcasting.py
in this book's code bundle):
import scipy.io.wavfile import matplotlib.pyplot as plt import urllib2 import numpy as np response = urllib2.urlopen('http://www.thesoundarchive.com/austinpowers/smashingbaby.wav') print response.info() WAV_FILE = 'smashingbaby.wav' filehandle = open(WAV_FILE, 'w') filehandle.write(response.read()) filehandle.close() sample_rate, data = scipy.io.wavfile.read(WAV_FILE) print "Data type", data.dtype, "Shape", data.shape plt.subplot(2, 1, 1) plt.title("Original") plt.plot(data) newdata = data * 0.2 newdata = newdata.astype(np.uint8) print "Data type", newdata.dtype, "Shape...