[Numpy-discussion] Determine if two arrays share references
Robert Kern
robert.kern at gmail.com
Wed Feb 10 23:01:57 EST 2010
On Wed, Feb 10, 2010 at 21:41, Keith Goodman <kwgoodman at gmail.com> wrote:
> Here are two arrays that share references:
>
>>> x = np.array([1,2,3])
>>> y = x[1:]
>
> and here are two that don't:
>
>>> x = np.array([1,2,3])
>>> y = x[1:].copy()
>
> If I didn't know how the arrays were constructed, how would I
> determine if any elements in the two arrays share reference?
It is hard to do this 100% accurately given the full variety of
strided memory, but:
In [2]: np.may_share_memory?
Type: function
Base Class: <type 'function'>
String Form: <function may_share_memory at 0x1565bb0>
Namespace: Interactive
File:
/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/numpy-1.3.0-py2.5-macosx-10.3-i386.egg/numpy/lib/utils.py
Definition: np.may_share_memory(a, b)
Docstring:
Determine if two arrays can share memory
The memory-bounds of a and b are computed. If they overlap then
this function returns True. Otherwise, it returns False.
A return of True does not necessarily mean that the two arrays
share any element. It just means that they *might*.
One example where this function returns True when a 100% accurate
function would return False is x[::2] and x[1::2].
--
Robert Kern
"I have come to believe that the whole world is an enigma, a harmless
enigma that is made terrible by our own mad attempt to interpret it as
though it had an underlying truth."
-- Umberto Eco
More information about the NumPy-Discussion
mailing list