Discussion:
[Numpy-discussion] Is this a known error in Ipython with numpy?
Elliot Hallmark
2016-04-27 23:48:13 UTC
Permalink
Hello,

I haven't worked hard yet to create a minimal runnable (reproduce-able)
example but I wanted to check if this sounds familiar to anyone.

I have a pretty involved program that resizes arrays in place with
arr.resize. When I run it with python it completes and gives the expected
result. When I run it in Ipython, I get the following error:

```
---> 43 self._buffer.resize((count,)+self._dim)
44
45

ValueError: cannot resize an array that references or is referenced
by another array in this way. Use the resize function
```

It was consistently doing this on the same array, after resizing two others
before hand, even after rebooting. But trying to track it down it goes
away even if I undo everything I did to try and track it down.

Does this sound familiar?
Alexander Griffing
2016-04-28 01:49:16 UTC
Permalink
Post by Elliot Hallmark
Hello,
I haven't worked hard yet to create a minimal runnable (reproduce-able)
example but I wanted to check if this sounds familiar to anyone.
I have a pretty involved program that resizes arrays in place with
arr.resize. When I run it with python it completes and gives the expected
```
---> 43 self._buffer.resize((count,)+self._dim)
44
45
ValueError: cannot resize an array that references or is referenced
by another array in this way. Use the resize function
```
It was consistently doing this on the same array, after resizing two others
before hand, even after rebooting. But trying to track it down it goes away
even if I undo everything I did to try and track it down.
Does this sound familiar?
_______________________________________________
NumPy-Discussion mailing list
https://mail.scipy.org/mailman/listinfo/numpy-discussion
I'd guess the issue is that your environment (IPython or IDLE or
whatever) is keeping a reference to your array, for example so that
you can refer to earlier outputs using the underscore _. Here's how I
Post by Elliot Hallmark
import numpy as np
a = np.arange(10)
a.resize(3)
a
array([0, 1, 2])
Post by Elliot Hallmark
import numpy as np
a = np.arange(10)
a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
Post by Elliot Hallmark
a.resize(3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: cannot resize an array that references or is referenced
by another array in this way. Use the resize function

Cheers,
Alex
Nathan Goldbaum
2016-04-28 01:54:37 UTC
Permalink
Post by Elliot Hallmark
Post by Elliot Hallmark
Hello,
I haven't worked hard yet to create a minimal runnable (reproduce-able)
example but I wanted to check if this sounds familiar to anyone.
I have a pretty involved program that resizes arrays in place with
arr.resize. When I run it with python it completes and gives the
expected
Post by Elliot Hallmark
```
---> 43 self._buffer.resize((count,)+self._dim)
44
45
ValueError: cannot resize an array that references or is referenced
by another array in this way. Use the resize function
```
It was consistently doing this on the same array, after resizing two
others
Post by Elliot Hallmark
before hand, even after rebooting. But trying to track it down it goes
away
Post by Elliot Hallmark
even if I undo everything I did to try and track it down.
You might find the %xdel magic to be useful:

In [1]: %xdel?
Docstring:
Delete a variable, trying to clear it from anywhere that
IPython's machinery has references to it. By default, this uses
the identity of the named object in the user namespace to remove
references held under other names. The object is also removed
from the output history.

Options
-n : Delete the specified name from all namespaces, without
checking their identity.
Post by Elliot Hallmark
Post by Elliot Hallmark
Does this sound familiar?
_______________________________________________
NumPy-Discussion mailing list
https://mail.scipy.org/mailman/listinfo/numpy-discussion
I'd guess the issue is that your environment (IPython or IDLE or
whatever) is keeping a reference to your array, for example so that
you can refer to earlier outputs using the underscore _. Here's how I
Post by Elliot Hallmark
import numpy as np
a = np.arange(10)
a.resize(3)
a
array([0, 1, 2])
Post by Elliot Hallmark
import numpy as np
a = np.arange(10)
a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
Post by Elliot Hallmark
a.resize(3)
File "<stdin>", line 1, in <module>
ValueError: cannot resize an array that references or is referenced
by another array in this way. Use the resize function
Cheers,
Alex
_______________________________________________
NumPy-Discussion mailing list
https://mail.scipy.org/mailman/listinfo/numpy-discussion
Elliot Hallmark
2016-04-28 02:42:23 UTC
Permalink
Hey Alex. Thanks. I was aware of that. However, I was simply doing `run
myscript.py` on the first input line of the Ipython shell, so I did not
expect this behaviour.

The ipython list would be a better place to ask I guess, since the
behaviour on numpy's part is to be expected. Just wondering if any numpy
folks had seen this before.

Elliot

Loading...