On 4/23/07, Christopher Barker <[EMAIL PROTECTED]> wrote:
Gael Varoquaux wrote:
> Unless I miss something obvious "a.reshape()" doesn't modify a, which is
> somewhat missleading, IMHO.
quite correct. .reshape() creates a new array that shared data with the
original:
Sometimes it do, sometimes it don't:
In [8]: x = ones((8,8))
In [9]: y = x[:3,:6]
In [10]: z = y.reshape(2,9)
In [11]: z[...] = 0
In [12]: x
Out[12]:
array([[ 1., 1., 1., 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1., 1., 1., 1.]])
In [13]: z
Out[13]:
array([[ 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0.]
As Ann pointed out, sometimes reusing the same array isn't possible. This
makes the use of reshaped arrays as l-values subject to subtle errors, so
caution is advised.
Chuck
_______________________________________________
Numpy-discussion mailing list
[email protected]
http://projects.scipy.org/mailman/listinfo/numpy-discussion