[Numpy-discussion] "upsample" or scale an array

Warren Weckesser warren.weckesser at enthought.com
Sat Dec 3 01:51:21 EST 2011


On Sat, Dec 3, 2011 at 12:35 AM, Robin Kraft <rkraft4 at gmail.com> wrote:

> I need to take an array - derived from raster GIS data - and upsample or
> scale it. That is, I need to repeat each value in each dimension so that,
> for example, a 2x2 array becomes a 4x4 array as follows:
>
> [[1, 2],
>  [3, 4]]
>
> becomes
>
> [[1,1,2,2],
>  [1,1,2,2],
>  [3,3,4,4]
>  [3,3,4,4]]
>
> It seems like some combination of np.resize or np.repeat and reshape +
> rollaxis would do the trick, but I'm at a loss.
>
> Many thanks!
>
> -Robin
>


Just a day or so ago, Josef Perktold showed one way of accomplishing this
using numpy.kron:

In [14]: a = arange(12).reshape(3,4)

In [15]: a
Out[15]:
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

In [16]: kron(a, ones((2,2)))
Out[16]:
array([[  0.,   0.,   1.,   1.,   2.,   2.,   3.,   3.],
       [  0.,   0.,   1.,   1.,   2.,   2.,   3.,   3.],
       [  4.,   4.,   5.,   5.,   6.,   6.,   7.,   7.],
       [  4.,   4.,   5.,   5.,   6.,   6.,   7.,   7.],
       [  8.,   8.,   9.,   9.,  10.,  10.,  11.,  11.],
       [  8.,   8.,   9.,   9.,  10.,  10.,  11.,  11.]])


Warren
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20111203/9935e3a6/attachment.html>


More information about the NumPy-Discussion mailing list