Suppose and are vectors and we want to form the matrix with elements . This would correspond to the function . The matrix is merely defined by:
W=u.reshape(-1,1) + v
If the vectors and are and  respectively, the result is:
array([[2, 3, 4],
[3, 4, 5]])
More generally, suppose that we want to sample the function . Supposing that the vectors and are defined, the matrix of sampled values is obtained with:
W = cos(x).reshape(-1,1) + sin(2*y)
Note that this is very frequently used in combination with ogrid. The vectors obtained from ogrid are already conveniently shaped for broadcasting. This allows for the following elegant sampling of the function :
x,y = ogrid[0:1:3j,0:1:3j] # x,y are vectors with the contents of linspace(0,1,3) w = cos(x) + sin(2*y)
The syntax of ogrid needs some explanation: First, ogrid is not a function. It is an instance...