From: Filip W. <fi...@ft...> - 2006-05-11 22:59:39
|
Hi joris, > I was surprised by the following effect of resize() >>>> from numpy import * # 0.9.6 >>>> a = array([1,2,3,4]) >>>> a.resize(2,2) >>>> a > array([[1, 2], > [3, 4]]) >>>> a.resize(2,3) > Traceback (most recent call last): > File "<stdin>", line 1, in ? > ValueError: cannot resize an array that has been referenced or is referencing > another array in this way. Use the resize function > Where exactly is the reference? I just started the interactive python shell, > did nothing else... You have also typed >>> a which in turn prints repr() of the array and causes some side effect in the interactive mode (the `a` array is also referenced by _ special variable after this). Try running this code as a script or use `print a`: a.resize(2,2) >>> print a [[1 2] [3 4]] >>> a.resize(2,3) >>> print a [[1 2 3] [4 0 0]] > On the other hand, restarting python and executing >>>> from numpy import * >>>> a = array([1,2,3,4]) >>>> a.resize(2,3) >>>> a > array([[1, 2, 3], > [4, 0, 0]]) > does work... Yes, no extra referencing before array resizing here. > Why didn't it work for the first case? This is just a small interactive mode feature and does not happen during normal script execution. cheers, fw |