[Numpy-discussion] array view with different shape

Christopher Barker Chris.Barker@noaa....
Wed Sep 15 15:26:06 CDT 2010


Mark Bakker wrote:
> Can I make a view of an entire array but with a different shape?
yup.

> For example:
> 
> a = zeros((2,3,4))
> 
> Now I want array b to be identical to a, but with shape (2,12).
> 
> b = a; b.shape = (2,12)
> 
> This doesn't work, of course, as also the shape of a changes.

as ab and b are bound to the same single object.

someone already gave you reshape(), but for the more general case, 
.view() is handy:

In [11]: a = np.zeros((2,3,4))

In [12]: b = a.view()

In [13]: b.shape = (2, 12)

In [14]: a.shape
Out[14]: (2, 3, 4)

# so they are different objects.

In [15]: a[0,0,0] = 1

In [16]: b
Out[16]:
array([[ 1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]])

# that do share data.

note that .view() can do all sorts of nifty things like change the data 
type or make an np.matrix, or...

-Chris


-- 
Christopher Barker, Ph.D.
Oceanographer

Emergency Response Division
NOAA/NOS/OR&R            (206) 526-6959   voice
7600 Sand Point Way NE   (206) 526-6329   fax
Seattle, WA  98115       (206) 526-6317   main reception

Chris.Barker@noaa.gov


More information about the NumPy-Discussion mailing list