[Numpy-discussion] summarizing blocks of an array using a moving window

Warren Weckesser warren.weckesser at enthought.com
Thu Jul 22 13:35:57 EDT 2010


Keith Goodman wrote:
> On Thu, Jul 22, 2010 at 7:48 AM, Warren Weckesser
> <warren.weckesser at enthought.com> wrote:
>
>   
>> Actually, because of the use of reshape(3,3,4), your second
>> example does make a copy.
>>     
>
> When does reshape return a view and when does it return a copy?
>
>   

According to the numpy.reshape docstring, it returns
a view when it can.  In the previous example, it is
not possible to configure the strides so that the
four elements in each 2x2 block can be represented
in a single axis using the original memory layout,
so the data must be copied to achieve the shape
(3,3,4).

> Here's a simple example that returns a view:
>
>   
>>> x = np.array([1,2,3,4])
>>> y = x.reshape(2,2)
>>> y[0,0] = 9
>>> x
>>>       
>    array([9, 2, 3, 4])
>
> What's a simple example that returns a copy?
>   

In [85]: x = np.array([[1,2],[3,4],[5,6]]).T  # Note the transpose.

In [86]: x
Out[86]:
array([[1, 3, 5],
       [2, 4, 6]])

In [87]: y = x.reshape(6)

In [88]: x[0,1] = 99

In [89]: y
Out[89]: array([1, 3, 5, 2, 4, 6])



Warren

> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>   




More information about the NumPy-Discussion mailing list