19 Dec
2008
19 Dec
'08
6:08 p.m.
Fri, 19 Dec 2008 18:31:33 +0100, Bastian Weber wrote:
I just stumbled across the following behaviour:
from scipy import * a=array([0,1]) m=matrix([0,1]) a=a+m m+=a a+=m <type 'exceptions.ValueError'>: invalid return array shape
Can anyone explain me why it is implemented this way? I mean, it is not that intuitive.
In-place operations require that the result is broadcastable [1] to the same size as the left-hand side. a.shape == (2,) m.shape == (1,2) (a+m).shape == (1,2) (2,) is broadcastable to (1,2), but (1,2) is not broadcastable to (2,). Hence, m += a is possible, but a += m is not. .. [1] http://docs.scipy.org/doc/numpy/reference/ufuncs.html#broadcasting -- Pauli Virtanen