[Numpy-discussion] Determining if two arrays share data
Rob W.W. Hooft
rob at hooft.net
Thu Jul 6 05:03:15 EDT 2006
Stefan van der Walt wrote:
> On Thu, Jul 06, 2006 at 11:39:19AM +0900, Bill Baxter wrote:
>
>>Often when I'm doing interactive prototyping I find myself wanting to check
>>whether two arrays are sharing a copy of the same data.
>
>
> Say you have
>
> x = N.array([1,2,3,4])
>
> and
>
> y = x.reshape((2,2))
>
> then x and y share the same data. You can see this when you do
>
> x.__array_interface__['data'][0] == y.__array_interface__['data'][0]
>
> Still, this only holds for full data views. If you had
>
> z = y[1:,1:]
>
> then the data memory position would differ.
I am still using Numeric, but even with that background I think that the
problem is ill-defined. Consider the following interactive session:
Python 2.3b1+ (#2, Jun 10 2003, 20:53:51)
[GCC 3.0.2 20010905 (Red Hat Linux 7.1 3.0.1-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import Numeric
>>> a=Numeric.arange(20)
>>> b=a[::2]
>>> c=a[1::2]
>>> a
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18,
19])
>>> b
array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18])
>>> c
array([ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19])
>>> b[0]=99
>>> c[0]=99
>>> a
array([99, 99, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18,
19])
Do "b" and "c" share a copy of the same data? None of the values in
either array is visible in the other, but both share data with "a"!
Regards,
Rob
--
Rob W.W. Hooft || rob at hooft.net || http://www.hooft.net/people/rob/
More information about the NumPy-Discussion
mailing list