“is” operation returns false with ndarray.data attribute, even though two array objects have same id The 2019 Stack Overflow Developer Survey Results Are In Unicorn Meta Zoo #1: Why another podcast? Announcing the arrival of Valued Associate #679: Cesar Manara The Ask Question Wizard is Live! Data science time! April 2019 and salary with experienceid() vs `is` operator. Is it safe to compare `id`s? Does the same `id` mean the same object?How to return multiple values from a function?Relationship between SciPy and NumPyCreating a singleton in PythonPython: two objects are the sameWhy is [] faster than list()?is comparison returns False with strings using same ididentity comparison - comparing same object returns falseEven though I have created two seperate lists, why is the if condition trueHow can two Python objects have same id but 'is' operator returns False?Comparing Objects - Why is == returning 'False' in the following example?

Circular reasoning in L'Hopital's rule

Presidential Pardon

Can the DM override racial traits?

How to read αἱμύλιος or when to aspirate

Single author papers against my advisor's will?

Variable with quotation marks "$()"

"is" operation returns false with ndarray.data attribute, even though two array objects have same id

Why can't devices on different VLANs, but on the same subnet, communicate?

Deal with toxic manager when you can't quit

How to support a colleague who finds meetings extremely tiring?

What's the point in a preamp?

Didn't get enough time to take a Coding Test - what to do now?

Why don't hard Brexiteers insist on a hard border to prevent illegal immigration after Brexit?

Drawing vertical/oblique lines in Metrical tree (tikz-qtree, tipa)

Do warforged have souls?

Example of compact Riemannian manifold with only one geodesic.

How to politely respond to generic emails requesting a PhD/job in my lab? Without wasting too much time

Word to describe a time interval

Windows 10: How to Lock (not sleep) laptop on lid close?

A phrase ”follow into" in a context

Am I ethically obligated to go into work on an off day if the reason is sudden?

Can we generate random numbers using irrational numbers like π and e?

Identify 80s or 90s comics with ripped creatures (not dwarves)

What force causes entropy to increase?



“is” operation returns false with ndarray.data attribute, even though two array objects have same id



The 2019 Stack Overflow Developer Survey Results Are In
Unicorn Meta Zoo #1: Why another podcast?
Announcing the arrival of Valued Associate #679: Cesar Manara
The Ask Question Wizard is Live!
Data science time! April 2019 and salary with experienceid() vs `is` operator. Is it safe to compare `id`s? Does the same `id` mean the same object?How to return multiple values from a function?Relationship between SciPy and NumPyCreating a singleton in PythonPython: two objects are the sameWhy is [] faster than list()?is comparison returns False with strings using same ididentity comparison - comparing same object returns falseEven though I have created two seperate lists, why is the if condition trueHow can two Python objects have same id but 'is' operator returns False?Comparing Objects - Why is == returning 'False' in the following example?



.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;








8















Two python objects have the same id but "is" operation returns false as shown below:



a = np.arange(12).reshape(2, -1)
c = a.reshape(12, 1)
print("id(c.data)", id(c.data))
print("id(a.data)", id(a.data))

print(c.data is a.data)
print(id(c.data) == id(a.data))


Here is the actual output:



id(c.data) 241233112
id(a.data) 241233112
False
True


My question is... why "c.data is a.data" returns false even though they point to the same ID, thus pointing to the same object? I thought that they point to the same object if they have same ID or am I wrong? Thank you!










share|improve this question



















  • 1





    @C.Nivs They don't even necessarily have different memory addresses (something which Python doesn't expose). Whatever memory was used for the first may have been reused for the second.

    – chepner
    7 hours ago






  • 3





    @C.Nivs Don't think of it in terms of memory addresses. How memory is managed is completely implementation dependent. All you know for sure is that two objects that overlap in time will not have the same id.

    – chepner
    7 hours ago






  • 1





    @Aran-Fey, that's okay a good question(though asked before) can sometimes be resurrected for a fruitful discussion

    – amanb
    6 hours ago






  • 3





    @C.Nivs no, ids do not belong to variables. They belong to objects. Many variables can reference the same object.

    – juanpa.arrivillaga
    6 hours ago






  • 2





    @juanpa.arrivillaga fair enough. Thanks for the explanation

    – C.Nivs
    5 hours ago

















8















Two python objects have the same id but "is" operation returns false as shown below:



a = np.arange(12).reshape(2, -1)
c = a.reshape(12, 1)
print("id(c.data)", id(c.data))
print("id(a.data)", id(a.data))

print(c.data is a.data)
print(id(c.data) == id(a.data))


Here is the actual output:



id(c.data) 241233112
id(a.data) 241233112
False
True


My question is... why "c.data is a.data" returns false even though they point to the same ID, thus pointing to the same object? I thought that they point to the same object if they have same ID or am I wrong? Thank you!










share|improve this question



















  • 1





    @C.Nivs They don't even necessarily have different memory addresses (something which Python doesn't expose). Whatever memory was used for the first may have been reused for the second.

    – chepner
    7 hours ago






  • 3





    @C.Nivs Don't think of it in terms of memory addresses. How memory is managed is completely implementation dependent. All you know for sure is that two objects that overlap in time will not have the same id.

    – chepner
    7 hours ago






  • 1





    @Aran-Fey, that's okay a good question(though asked before) can sometimes be resurrected for a fruitful discussion

    – amanb
    6 hours ago






  • 3





    @C.Nivs no, ids do not belong to variables. They belong to objects. Many variables can reference the same object.

    – juanpa.arrivillaga
    6 hours ago






  • 2





    @juanpa.arrivillaga fair enough. Thanks for the explanation

    – C.Nivs
    5 hours ago













8












8








8








Two python objects have the same id but "is" operation returns false as shown below:



a = np.arange(12).reshape(2, -1)
c = a.reshape(12, 1)
print("id(c.data)", id(c.data))
print("id(a.data)", id(a.data))

print(c.data is a.data)
print(id(c.data) == id(a.data))


Here is the actual output:



id(c.data) 241233112
id(a.data) 241233112
False
True


My question is... why "c.data is a.data" returns false even though they point to the same ID, thus pointing to the same object? I thought that they point to the same object if they have same ID or am I wrong? Thank you!










share|improve this question
















Two python objects have the same id but "is" operation returns false as shown below:



a = np.arange(12).reshape(2, -1)
c = a.reshape(12, 1)
print("id(c.data)", id(c.data))
print("id(a.data)", id(a.data))

print(c.data is a.data)
print(id(c.data) == id(a.data))


Here is the actual output:



id(c.data) 241233112
id(a.data) 241233112
False
True


My question is... why "c.data is a.data" returns false even though they point to the same ID, thus pointing to the same object? I thought that they point to the same object if they have same ID or am I wrong? Thank you!







python numpy numpy-ndarray memoryview






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 39 mins ago









smci

15.6k679109




15.6k679109










asked 7 hours ago









drminixdrminix

513




513







  • 1





    @C.Nivs They don't even necessarily have different memory addresses (something which Python doesn't expose). Whatever memory was used for the first may have been reused for the second.

    – chepner
    7 hours ago






  • 3





    @C.Nivs Don't think of it in terms of memory addresses. How memory is managed is completely implementation dependent. All you know for sure is that two objects that overlap in time will not have the same id.

    – chepner
    7 hours ago






  • 1





    @Aran-Fey, that's okay a good question(though asked before) can sometimes be resurrected for a fruitful discussion

    – amanb
    6 hours ago






  • 3





    @C.Nivs no, ids do not belong to variables. They belong to objects. Many variables can reference the same object.

    – juanpa.arrivillaga
    6 hours ago






  • 2





    @juanpa.arrivillaga fair enough. Thanks for the explanation

    – C.Nivs
    5 hours ago












  • 1





    @C.Nivs They don't even necessarily have different memory addresses (something which Python doesn't expose). Whatever memory was used for the first may have been reused for the second.

    – chepner
    7 hours ago






  • 3





    @C.Nivs Don't think of it in terms of memory addresses. How memory is managed is completely implementation dependent. All you know for sure is that two objects that overlap in time will not have the same id.

    – chepner
    7 hours ago






  • 1





    @Aran-Fey, that's okay a good question(though asked before) can sometimes be resurrected for a fruitful discussion

    – amanb
    6 hours ago






  • 3





    @C.Nivs no, ids do not belong to variables. They belong to objects. Many variables can reference the same object.

    – juanpa.arrivillaga
    6 hours ago






  • 2





    @juanpa.arrivillaga fair enough. Thanks for the explanation

    – C.Nivs
    5 hours ago







1




1





@C.Nivs They don't even necessarily have different memory addresses (something which Python doesn't expose). Whatever memory was used for the first may have been reused for the second.

– chepner
7 hours ago





@C.Nivs They don't even necessarily have different memory addresses (something which Python doesn't expose). Whatever memory was used for the first may have been reused for the second.

– chepner
7 hours ago




3




3





@C.Nivs Don't think of it in terms of memory addresses. How memory is managed is completely implementation dependent. All you know for sure is that two objects that overlap in time will not have the same id.

– chepner
7 hours ago





@C.Nivs Don't think of it in terms of memory addresses. How memory is managed is completely implementation dependent. All you know for sure is that two objects that overlap in time will not have the same id.

– chepner
7 hours ago




1




1





@Aran-Fey, that's okay a good question(though asked before) can sometimes be resurrected for a fruitful discussion

– amanb
6 hours ago





@Aran-Fey, that's okay a good question(though asked before) can sometimes be resurrected for a fruitful discussion

– amanb
6 hours ago




3




3





@C.Nivs no, ids do not belong to variables. They belong to objects. Many variables can reference the same object.

– juanpa.arrivillaga
6 hours ago





@C.Nivs no, ids do not belong to variables. They belong to objects. Many variables can reference the same object.

– juanpa.arrivillaga
6 hours ago




2




2





@juanpa.arrivillaga fair enough. Thanks for the explanation

– C.Nivs
5 hours ago





@juanpa.arrivillaga fair enough. Thanks for the explanation

– C.Nivs
5 hours ago












2 Answers
2






active

oldest

votes


















12














a.data and c.data both produce a transient object, with no reference to it. As such, both are immediately garbage-collected. The same id can be used for both.



In your first if statement, the objects have to co-exist while is checks if they are identical, which they are not.



In the second if statement, each object is released as soon as id returns its id.



If you save references to both objects, keeping them alive, you can see they are not the same object.



r0 = a.data
r1 = c.data
assert r0 is not r1





share|improve this answer




















  • 4





    what is confusing is the fact that data looks like an attribute, but is probably a property

    – Jean-François Fabre
    7 hours ago











  • In my tests, the id's are different in the first run, but change to become the same on subsequent runs.

    – amanb
    7 hours ago











  • @Jean-FrançoisFabre so would that mean that the object itself is only returned when a getter is called, and the property is not actually stored in the class? I'm not quite familiar with the differences between a property vs attribute

    – C.Nivs
    7 hours ago






  • 5





    a property is a method disguised as an attribute. So it can return a discardable integer, object, whatever.

    – Jean-François Fabre
    7 hours ago


















3














In [62]: a = np.arange(12).reshape(2,-1) 
...: c = a.reshape(12,1)


.data returns a memoryview object. id just gives the id of that object; it's not the value of the object, or any indication of where a databuffer is located.



In [63]: a.data 
Out[63]: <memory at 0x7f672d1101f8>
In [64]: c.data
Out[64]: <memory at 0x7f672d1103a8>
In [65]: type(a.data)
Out[65]: memoryview


https://docs.python.org/3/library/stdtypes.html#memoryview



If you want to verify that a and c share a data buffer, I find the __array_interface__ to be a better tool.



In [66]: a.__array_interface__['data'] 
Out[66]: (50988640, False)
In [67]: c.__array_interface__['data']
Out[67]: (50988640, False)


It even shows the offset produced by slicing - here 24 bytes, 3*8



In [68]: c[3:].__array_interface__['data'] 
Out[68]: (50988664, False)



I haven't seen much use of a.data. It can be used as the buffer object when creating a new array with ndarray:



In [70]: d = np.ndarray((2,6), dtype=a.dtype, buffer=a.data) 
In [71]: d
Out[71]:
array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11]])
In [72]: d.__array_interface__['data']
Out[72]: (50988640, False)


But normally we create new arrays with shared memory with slicing or np.array (copy=False).






share|improve this answer

























    Your Answer






    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "1"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55658189%2fis-operation-returns-false-with-ndarray-data-attribute-even-though-two-array%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    12














    a.data and c.data both produce a transient object, with no reference to it. As such, both are immediately garbage-collected. The same id can be used for both.



    In your first if statement, the objects have to co-exist while is checks if they are identical, which they are not.



    In the second if statement, each object is released as soon as id returns its id.



    If you save references to both objects, keeping them alive, you can see they are not the same object.



    r0 = a.data
    r1 = c.data
    assert r0 is not r1





    share|improve this answer




















    • 4





      what is confusing is the fact that data looks like an attribute, but is probably a property

      – Jean-François Fabre
      7 hours ago











    • In my tests, the id's are different in the first run, but change to become the same on subsequent runs.

      – amanb
      7 hours ago











    • @Jean-FrançoisFabre so would that mean that the object itself is only returned when a getter is called, and the property is not actually stored in the class? I'm not quite familiar with the differences between a property vs attribute

      – C.Nivs
      7 hours ago






    • 5





      a property is a method disguised as an attribute. So it can return a discardable integer, object, whatever.

      – Jean-François Fabre
      7 hours ago















    12














    a.data and c.data both produce a transient object, with no reference to it. As such, both are immediately garbage-collected. The same id can be used for both.



    In your first if statement, the objects have to co-exist while is checks if they are identical, which they are not.



    In the second if statement, each object is released as soon as id returns its id.



    If you save references to both objects, keeping them alive, you can see they are not the same object.



    r0 = a.data
    r1 = c.data
    assert r0 is not r1





    share|improve this answer




















    • 4





      what is confusing is the fact that data looks like an attribute, but is probably a property

      – Jean-François Fabre
      7 hours ago











    • In my tests, the id's are different in the first run, but change to become the same on subsequent runs.

      – amanb
      7 hours ago











    • @Jean-FrançoisFabre so would that mean that the object itself is only returned when a getter is called, and the property is not actually stored in the class? I'm not quite familiar with the differences between a property vs attribute

      – C.Nivs
      7 hours ago






    • 5





      a property is a method disguised as an attribute. So it can return a discardable integer, object, whatever.

      – Jean-François Fabre
      7 hours ago













    12












    12








    12







    a.data and c.data both produce a transient object, with no reference to it. As such, both are immediately garbage-collected. The same id can be used for both.



    In your first if statement, the objects have to co-exist while is checks if they are identical, which they are not.



    In the second if statement, each object is released as soon as id returns its id.



    If you save references to both objects, keeping them alive, you can see they are not the same object.



    r0 = a.data
    r1 = c.data
    assert r0 is not r1





    share|improve this answer















    a.data and c.data both produce a transient object, with no reference to it. As such, both are immediately garbage-collected. The same id can be used for both.



    In your first if statement, the objects have to co-exist while is checks if they are identical, which they are not.



    In the second if statement, each object is released as soon as id returns its id.



    If you save references to both objects, keeping them alive, you can see they are not the same object.



    r0 = a.data
    r1 = c.data
    assert r0 is not r1






    share|improve this answer














    share|improve this answer



    share|improve this answer








    edited 7 hours ago

























    answered 7 hours ago









    chepnerchepner

    262k35251345




    262k35251345







    • 4





      what is confusing is the fact that data looks like an attribute, but is probably a property

      – Jean-François Fabre
      7 hours ago











    • In my tests, the id's are different in the first run, but change to become the same on subsequent runs.

      – amanb
      7 hours ago











    • @Jean-FrançoisFabre so would that mean that the object itself is only returned when a getter is called, and the property is not actually stored in the class? I'm not quite familiar with the differences between a property vs attribute

      – C.Nivs
      7 hours ago






    • 5





      a property is a method disguised as an attribute. So it can return a discardable integer, object, whatever.

      – Jean-François Fabre
      7 hours ago












    • 4





      what is confusing is the fact that data looks like an attribute, but is probably a property

      – Jean-François Fabre
      7 hours ago











    • In my tests, the id's are different in the first run, but change to become the same on subsequent runs.

      – amanb
      7 hours ago











    • @Jean-FrançoisFabre so would that mean that the object itself is only returned when a getter is called, and the property is not actually stored in the class? I'm not quite familiar with the differences between a property vs attribute

      – C.Nivs
      7 hours ago






    • 5





      a property is a method disguised as an attribute. So it can return a discardable integer, object, whatever.

      – Jean-François Fabre
      7 hours ago







    4




    4





    what is confusing is the fact that data looks like an attribute, but is probably a property

    – Jean-François Fabre
    7 hours ago





    what is confusing is the fact that data looks like an attribute, but is probably a property

    – Jean-François Fabre
    7 hours ago













    In my tests, the id's are different in the first run, but change to become the same on subsequent runs.

    – amanb
    7 hours ago





    In my tests, the id's are different in the first run, but change to become the same on subsequent runs.

    – amanb
    7 hours ago













    @Jean-FrançoisFabre so would that mean that the object itself is only returned when a getter is called, and the property is not actually stored in the class? I'm not quite familiar with the differences between a property vs attribute

    – C.Nivs
    7 hours ago





    @Jean-FrançoisFabre so would that mean that the object itself is only returned when a getter is called, and the property is not actually stored in the class? I'm not quite familiar with the differences between a property vs attribute

    – C.Nivs
    7 hours ago




    5




    5





    a property is a method disguised as an attribute. So it can return a discardable integer, object, whatever.

    – Jean-François Fabre
    7 hours ago





    a property is a method disguised as an attribute. So it can return a discardable integer, object, whatever.

    – Jean-François Fabre
    7 hours ago













    3














    In [62]: a = np.arange(12).reshape(2,-1) 
    ...: c = a.reshape(12,1)


    .data returns a memoryview object. id just gives the id of that object; it's not the value of the object, or any indication of where a databuffer is located.



    In [63]: a.data 
    Out[63]: <memory at 0x7f672d1101f8>
    In [64]: c.data
    Out[64]: <memory at 0x7f672d1103a8>
    In [65]: type(a.data)
    Out[65]: memoryview


    https://docs.python.org/3/library/stdtypes.html#memoryview



    If you want to verify that a and c share a data buffer, I find the __array_interface__ to be a better tool.



    In [66]: a.__array_interface__['data'] 
    Out[66]: (50988640, False)
    In [67]: c.__array_interface__['data']
    Out[67]: (50988640, False)


    It even shows the offset produced by slicing - here 24 bytes, 3*8



    In [68]: c[3:].__array_interface__['data'] 
    Out[68]: (50988664, False)



    I haven't seen much use of a.data. It can be used as the buffer object when creating a new array with ndarray:



    In [70]: d = np.ndarray((2,6), dtype=a.dtype, buffer=a.data) 
    In [71]: d
    Out[71]:
    array([[ 0, 1, 2, 3, 4, 5],
    [ 6, 7, 8, 9, 10, 11]])
    In [72]: d.__array_interface__['data']
    Out[72]: (50988640, False)


    But normally we create new arrays with shared memory with slicing or np.array (copy=False).






    share|improve this answer





























      3














      In [62]: a = np.arange(12).reshape(2,-1) 
      ...: c = a.reshape(12,1)


      .data returns a memoryview object. id just gives the id of that object; it's not the value of the object, or any indication of where a databuffer is located.



      In [63]: a.data 
      Out[63]: <memory at 0x7f672d1101f8>
      In [64]: c.data
      Out[64]: <memory at 0x7f672d1103a8>
      In [65]: type(a.data)
      Out[65]: memoryview


      https://docs.python.org/3/library/stdtypes.html#memoryview



      If you want to verify that a and c share a data buffer, I find the __array_interface__ to be a better tool.



      In [66]: a.__array_interface__['data'] 
      Out[66]: (50988640, False)
      In [67]: c.__array_interface__['data']
      Out[67]: (50988640, False)


      It even shows the offset produced by slicing - here 24 bytes, 3*8



      In [68]: c[3:].__array_interface__['data'] 
      Out[68]: (50988664, False)



      I haven't seen much use of a.data. It can be used as the buffer object when creating a new array with ndarray:



      In [70]: d = np.ndarray((2,6), dtype=a.dtype, buffer=a.data) 
      In [71]: d
      Out[71]:
      array([[ 0, 1, 2, 3, 4, 5],
      [ 6, 7, 8, 9, 10, 11]])
      In [72]: d.__array_interface__['data']
      Out[72]: (50988640, False)


      But normally we create new arrays with shared memory with slicing or np.array (copy=False).






      share|improve this answer



























        3












        3








        3







        In [62]: a = np.arange(12).reshape(2,-1) 
        ...: c = a.reshape(12,1)


        .data returns a memoryview object. id just gives the id of that object; it's not the value of the object, or any indication of where a databuffer is located.



        In [63]: a.data 
        Out[63]: <memory at 0x7f672d1101f8>
        In [64]: c.data
        Out[64]: <memory at 0x7f672d1103a8>
        In [65]: type(a.data)
        Out[65]: memoryview


        https://docs.python.org/3/library/stdtypes.html#memoryview



        If you want to verify that a and c share a data buffer, I find the __array_interface__ to be a better tool.



        In [66]: a.__array_interface__['data'] 
        Out[66]: (50988640, False)
        In [67]: c.__array_interface__['data']
        Out[67]: (50988640, False)


        It even shows the offset produced by slicing - here 24 bytes, 3*8



        In [68]: c[3:].__array_interface__['data'] 
        Out[68]: (50988664, False)



        I haven't seen much use of a.data. It can be used as the buffer object when creating a new array with ndarray:



        In [70]: d = np.ndarray((2,6), dtype=a.dtype, buffer=a.data) 
        In [71]: d
        Out[71]:
        array([[ 0, 1, 2, 3, 4, 5],
        [ 6, 7, 8, 9, 10, 11]])
        In [72]: d.__array_interface__['data']
        Out[72]: (50988640, False)


        But normally we create new arrays with shared memory with slicing or np.array (copy=False).






        share|improve this answer















        In [62]: a = np.arange(12).reshape(2,-1) 
        ...: c = a.reshape(12,1)


        .data returns a memoryview object. id just gives the id of that object; it's not the value of the object, or any indication of where a databuffer is located.



        In [63]: a.data 
        Out[63]: <memory at 0x7f672d1101f8>
        In [64]: c.data
        Out[64]: <memory at 0x7f672d1103a8>
        In [65]: type(a.data)
        Out[65]: memoryview


        https://docs.python.org/3/library/stdtypes.html#memoryview



        If you want to verify that a and c share a data buffer, I find the __array_interface__ to be a better tool.



        In [66]: a.__array_interface__['data'] 
        Out[66]: (50988640, False)
        In [67]: c.__array_interface__['data']
        Out[67]: (50988640, False)


        It even shows the offset produced by slicing - here 24 bytes, 3*8



        In [68]: c[3:].__array_interface__['data'] 
        Out[68]: (50988664, False)



        I haven't seen much use of a.data. It can be used as the buffer object when creating a new array with ndarray:



        In [70]: d = np.ndarray((2,6), dtype=a.dtype, buffer=a.data) 
        In [71]: d
        Out[71]:
        array([[ 0, 1, 2, 3, 4, 5],
        [ 6, 7, 8, 9, 10, 11]])
        In [72]: d.__array_interface__['data']
        Out[72]: (50988640, False)


        But normally we create new arrays with shared memory with slicing or np.array (copy=False).







        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited 6 hours ago

























        answered 6 hours ago









        hpauljhpaulj

        118k787160




        118k787160



























            draft saved

            draft discarded
















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55658189%2fis-operation-returns-false-with-ndarray-data-attribute-even-though-two-array%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            یوتیوب محتویات پیشینه[ویرایش] فناوری‌های ویدئویی[ویرایش] شوخی‌های آوریل[ویرایش] سانسور و فیلترینگ[ویرایش] آمار و ارقامی از یوتیوب[ویرایش] تأثیر اجتماعی[ویرایش] سیاست اجتماعی[ویرایش] نمودارها[ویرایش] یادداشت‌ها[ویرایش] پانویس[ویرایش] پیوند به بیرون[ویرایش] منوی ناوبریبررسی شده‌استYouTube.com[بروزرسانی]"Youtube.com Site Info""زبان‌های یوتیوب""Surprise! There's a third YouTube co-founder"سایت یوتیوب برای چندمین بار در ایران فیلتر شدنسخهٔ اصلیسالار کمانگر جوان آمریکایی ایرانی الاصل مدیر سایت یوتیوب شدنسخهٔ اصلیVideo websites pop up, invite postingsthe originalthe originalYouTube: Overnight success has sparked a backlashthe original"Me at the zoo"YouTube serves up 100 million videos a day onlinethe originalcomScore Releases May 2010 U.S. Online Video Rankingsthe originalYouTube hits 4 billion daily video viewsthe originalYouTube users uploading two days of video every minutethe originalEric Schmidt, Princeton Colloquium on Public & Int'l Affairsthe original«Streaming Dreams»نسخهٔ اصلیAlexa Traffic Rank for YouTube (three month average)the originalHelp! YouTube is killing my business!the originalUtube sues YouTubethe originalGoogle closes $A2b YouTube dealthe originalFlash moves on to smart phonesthe originalYouTube HTML5 Video Playerنسخهٔ اصلیYouTube HTML5 Video Playerthe originalGoogle tries freeing Web video with WebMthe originalVideo length for uploadingthe originalYouTube caps video lengths to reduce infringementthe originalAccount Types: Longer videosthe originalYouTube bumps video limit to 15 minutesthe originalUploading large files and resumable uploadingthe originalVideo Formats: File formatsthe originalGetting Started: File formatsthe originalThe quest for a new video codec in Flash 8the originalAdobe Flash Video File Format Specification Version 10.1the originalYouTube Mobile goes livethe originalYouTube videos go HD with a simple hackthe originalYouTube now supports 4k-resolution videosthe originalYouTube to get high-def 1080p playerthe original«Approximate YouTube Bitrates»نسخهٔ اصلی«Bigger and Better: Encoding for YouTube 720p HD»نسخهٔ اصلی«YouTube's 1080p – Failure Depends on How You Look At It»نسخهٔ اصلیYouTube in 3Dthe originalYouTube in 3D?the originalYouTube 3D Videosthe originalYouTube adds a dimension, 3D goggles not includedthe originalYouTube Adds Stereoscopic 3D Video Support (And 3D Vision Support, Too)the original«Sharing YouTube Videos»نسخهٔ اصلی«Downloading videos from YouTube is not supported, except for one instance when it is permitted.»نسخهٔ اصلی«Terms of Use, 5.B»نسخهٔ اصلی«Some YouTube videos get download option»نسخهٔ اصلی«YouTube looks out for content owners, disables video ripping»«Downloading videos from YouTube is not supported, except for one instance when it is permitted.»نسخهٔ اصلی«YouTube Hopes To Boost Revenue With Video Downloads»نسخهٔ اصلی«YouTube Mobile»نسخهٔ اصلی«YouTube Live on Apple TV Today; Coming to iPhone on June 29»نسخهٔ اصلی«Goodbye Flash: YouTube mobile goes HTML5 on iPhone and Android»نسخهٔ اصلی«YouTube Mobile Goes HTML5, Video Quality Beats Native Apps Hands Down»نسخهٔ اصلی«TiVo Getting YouTube Streaming Today»نسخهٔ اصلی«YouTube video comes to Wii and PlayStation 3 game consoles»نسخهٔ اصلی«Coming Up Next... YouTube on Your TV»نسخهٔ اصلی«Experience YouTube XL on the Big Screen»نسخهٔ اصلی«Xbox Live Getting Live TV, YouTube & Bing Voice Search»نسخهٔ اصلی«YouTube content locations»نسخهٔ اصلی«April fools: YouTube turns the world up-side-down»نسخهٔ اصلی«YouTube goes back to 1911 for April Fools' Day»نسخهٔ اصلی«Simon Cowell's bromance, the self-driving Nascar and Hungry Hippos for iPad... the best April Fools' gags»نسخهٔ اصلی"YouTube Announces It Will Shut Down""YouTube Adds Darude 'Sandstorm' Button To Its Videos For April Fools' Day"«Censorship fears rise as Iran blocks access to top websites»نسخهٔ اصلی«China 'blocks YouTube video site'»نسخهٔ اصلی«YouTube shut down in Morocco»نسخهٔ اصلی«Thailand blocks access to YouTube»نسخهٔ اصلی«Ban on YouTube lifted after deal»نسخهٔ اصلی«Google's Gatekeepers»نسخهٔ اصلی«Turkey goes into battle with Google»نسخهٔ اصلی«Turkey lifts two-year ban on YouTube»نسخهٔ اصلیسانسور در ترکیه به یوتیوب رسیدلغو فیلترینگ یوتیوب در ترکیه«Pakistan blocks YouTube website»نسخهٔ اصلی«Pakistan lifts the ban on YouTube»نسخهٔ اصلی«Pakistan blocks access to YouTube in internet crackdown»نسخهٔ اصلی«Watchdog urges Libya to stop blocking websites»نسخهٔ اصلی«YouTube»نسخهٔ اصلی«Due to abuses of religion, customs Emirates, YouTube is blocked in the UAE»نسخهٔ اصلی«Google Conquered The Web - An Ultimate Winner»نسخهٔ اصلی«100 million videos are viewed daily on YouTube»نسخهٔ اصلی«Harry and Charlie Davies-Carr: Web gets taste for biting baby»نسخهٔ اصلی«Meet YouTube's 224 million girl, Natalie Tran»نسخهٔ اصلی«YouTube to Double Down on Its 'Channel' Experiment»نسخهٔ اصلی«13 Some Media Companies Choose to Profit From Pirated YouTube Clips»نسخهٔ اصلی«Irate HK man unlikely Web hero»نسخهٔ اصلی«Web Guitar Wizard Revealed at Last»نسخهٔ اصلی«Charlie bit my finger – again!»نسخهٔ اصلی«Lowered Expectations: Web Redefines 'Quality'»نسخهٔ اصلی«YouTube's 50 Greatest Viral Videos»نسخهٔ اصلیYouTube Community Guidelinesthe original«Why did my YouTube account get closed down?»نسخهٔ اصلی«Why do I have a sanction on my account?»نسخهٔ اصلی«Is YouTube's three-strike rule fair to users?»نسخهٔ اصلی«Viacom will sue YouTube for $1bn»نسخهٔ اصلی«Mediaset Files EUR500 Million Suit Vs Google's YouTube»نسخهٔ اصلی«Premier League to take action against YouTube»نسخهٔ اصلی«YouTube law fight 'threatens net'»نسخهٔ اصلی«Google must divulge YouTube log»نسخهٔ اصلی«Google Told to Turn Over User Data of YouTube»نسخهٔ اصلی«US judge tosses out Viacom copyright suit against YouTube»نسخهٔ اصلی«Google and Viacom: YouTube copyright lawsuit back on»نسخهٔ اصلی«Woman can sue over YouTube clip de-posting»نسخهٔ اصلی«YouTube loses court battle over music clips»نسخهٔ اصلیYouTube to Test Software To Ease Licensing Fightsthe original«Press Statistics»نسخهٔ اصلی«Testing YouTube's Audio Content ID System»نسخهٔ اصلی«Content ID disputes»نسخهٔ اصلیYouTube Community Guidelinesthe originalYouTube criticized in Germany over anti-Semitic Nazi videosthe originalFury as YouTube carries sick Hillsboro video insultthe originalYouTube attacked by MPs over sex and violence footagethe originalAl-Awlaki's YouTube Videos Targeted by Rep. Weinerthe originalYouTube Withdraws Cleric's Videosthe originalYouTube is letting users decide on terrorism-related videosthe original«Time's Person of the Year: You»نسخهٔ اصلی«Our top 10 funniest YouTube comments – what are yours?»نسخهٔ اصلی«YouTube's worst comments blocked by filter»نسخهٔ اصلی«Site Info YouTube»نسخهٔ اصلیوبگاه YouTubeوبگاه موبایل YouTubeوووووو

            Magento 2 - Auto login with specific URL Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?Customer can't login - Page refreshes but nothing happensCustom Login page redirectURL to login with redirect URL after completionCustomer login is case sensitiveLogin with phone number or email address - Magento 1.9Magento 2: Set Customer Account Confirmation StatusCustomer auto connect from URLHow to call customer login form in the custom module action magento 2?Change of customer login error message magento2Referrer URL in modal login form

            Rest API with Magento using PHP with example. Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?How to update product using magento client library for PHP?Oauth Error while extending Magento Rest APINot showing my custom api in wsdl(url) and web service list?Using Magento API(REST) via IXMLHTTPRequest COM ObjectHow to login in Magento website using REST APIREST api call for Guest userMagento API calling using HTML and javascriptUse API rest media management by storeView code (admin)Magento REST API Example ErrorsHow to log all rest api calls in magento2?How to update product using magento client library for PHP?