Thanks Pierre for noting that np.tile already provides a chunk of this functionality: >>> a = np.tile(5,(1,2,3)) >>> a array([[[5, 5, 5], [5, 5, 5]]]) >>> np.tile(1,a.shape) array([[[1, 1, 1], [1, 1, 1]]]) I had not realized a scalar first argument was possible. Alan Isaac