“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?
Is it ethical to upload a automatically generated paper to a non peer-reviewed site as part of a larger research?
60's-70's movie: home appliances revolting against the owners
What force causes entropy to increase?
How do you keep chess fun when your opponent constantly beats you?
Can the DM override racial traits?
Is it ok to offer lower paid work as a trial period before negotiating for a full-time job?
What other Star Trek series did the main TNG cast show up in?
Variable with quotation marks "$()"
ELI5: Why do they say that Israel would have been the fourth country to land a spacecraft on the Moon and why do they call it low cost?
Is every episode of "Where are my Pants?" identical?
Does Parliament need to approve the new Brexit delay to 31 October 2019?
Word for: a synonym with a positive connotation?
How did the audience guess the pentatonic scale in Bobby McFerrin's presentation?
Does Parliament hold absolute power in the UK?
Using dividends to reduce short term capital gains?
Is an up-to-date browser secure on an out-of-date OS?
A phrase ”follow into" in a context
How to support a colleague who finds meetings extremely tiring?
Huge performance difference of the command find with and without using %M option to show permissions
Is there a writing software that you can sort scenes like slides in PowerPoint?
Button changing its text & action. Good or terrible?
Example of compact Riemannian manifold with only one geodesic.
Are there continuous functions who are the same in an interval but differ in at least one other point?
What information about me do stores get via my credit card?
“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;
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
|
show 13 more comments
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
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
6 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
6 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
4 hours ago
|
show 13 more comments
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
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
python numpy numpy-ndarray memoryview
edited 20 mins ago
smci
15.6k679109
15.6k679109
asked 6 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
6 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
6 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
4 hours ago
|
show 13 more comments
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
6 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
6 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
4 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
6 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
6 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
6 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
6 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
4 hours ago
@juanpa.arrivillaga fair enough. Thanks for the explanation
– C.Nivs
4 hours ago
|
show 13 more comments
2 Answers
2
active
oldest
votes
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
4
what is confusing is the fact thatdata
looks like an attribute, but is probably a property
– Jean-François Fabre♦
6 hours ago
In my tests, the id's are different in the first run, but change to become the same on subsequent runs.
– amanb
6 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
6 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♦
6 hours ago
add a comment |
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).
add a comment |
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
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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
4
what is confusing is the fact thatdata
looks like an attribute, but is probably a property
– Jean-François Fabre♦
6 hours ago
In my tests, the id's are different in the first run, but change to become the same on subsequent runs.
– amanb
6 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
6 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♦
6 hours ago
add a comment |
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
4
what is confusing is the fact thatdata
looks like an attribute, but is probably a property
– Jean-François Fabre♦
6 hours ago
In my tests, the id's are different in the first run, but change to become the same on subsequent runs.
– amanb
6 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
6 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♦
6 hours ago
add a comment |
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
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
edited 6 hours ago
answered 6 hours ago
chepnerchepner
262k35251345
262k35251345
4
what is confusing is the fact thatdata
looks like an attribute, but is probably a property
– Jean-François Fabre♦
6 hours ago
In my tests, the id's are different in the first run, but change to become the same on subsequent runs.
– amanb
6 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
6 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♦
6 hours ago
add a comment |
4
what is confusing is the fact thatdata
looks like an attribute, but is probably a property
– Jean-François Fabre♦
6 hours ago
In my tests, the id's are different in the first run, but change to become the same on subsequent runs.
– amanb
6 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
6 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♦
6 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♦
6 hours ago
what is confusing is the fact that
data
looks like an attribute, but is probably a property– Jean-François Fabre♦
6 hours ago
In my tests, the id's are different in the first run, but change to become the same on subsequent runs.
– amanb
6 hours ago
In my tests, the id's are different in the first run, but change to become the same on subsequent runs.
– amanb
6 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
6 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
6 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♦
6 hours ago
a property is a method disguised as an attribute. So it can return a discardable integer, object, whatever.
– Jean-François Fabre♦
6 hours ago
add a comment |
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).
add a comment |
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).
add a comment |
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).
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).
edited 6 hours ago
answered 6 hours ago
hpauljhpaulj
118k787160
118k787160
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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
6 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
6 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
4 hours ago