# [Numpy-discussion] Need some explanations on assigning/incrementing values in Numpy

Loïc BERTHE berthe.loic@gmail....
Sat Nov 22 13:19:36 CST 2008

```I've encoutered an error during an ipython's session that I fail to understand :

In [12]: n = 4
In [13]: K = mat(diag(arange(2*n)))
In [14]: print K
[[0 0 0 0 0 0 0 0]
[0 1 0 0 0 0 0 0]
[0 0 2 0 0 0 0 0]
[0 0 0 3 0 0 0 0]
[0 0 0 0 4 0 0 0]
[0 0 0 0 0 5 0 0]
[0 0 0 0 0 0 6 0]
[0 0 0 0 0 0 0 7]]

In [15]: o = 2*arange(n)
In [16]: kc = 10 + arange(n)
In [17]: K[ r_[o-1, o], r_[o, o-1] ] = r_[kc, kc]
In [18]: print K
[[ 0  0  0  0  0  0  0 10]
[ 0  1 11  0  0  0  0  0]
[ 0 11  2  0  0  0  0  0]
[ 0  0  0  3 12  0  0  0]
[ 0  0  0 12  4  0  0  0]
[ 0  0  0  0  0  5 13  0]
[ 0  0  0  0  0 13  6  0]
[10  0  0  0  0  0  0  7]]

In [19]: K[ r_[o-1, o], r_[o, o-1]]  += 10*r_[kc, kc]
---------------------------------------------------------------------------
<type 'exceptions.ValueError'>            Traceback (most recent call last)
/home/loic/Python/numpy/<ipython console> in <module>()
<type 'exceptions.ValueError'>: array is not broadcastable to correct shape

In [20]: print K[ r_[o-1, o], r_[o, o-1]].shape, r_[kc, kc].shape
(1, 8) (8,)

In [21]: print K[ r_[o-1, o], r_[o, o-1]].shape, r_[kc, kc][newaxis, :].shape
(1, 8) (1, 8)

In [22]: K[ r_[o-1, o], r_[o, o-1]]  += 10*r_[kc, kc][newaxis, :]
---------------------------------------------------------------------------
<type 'exceptions.ValueError'>            Traceback (most recent call last)
/home/loic/Python/numpy/<ipython console> in <module>()
<type 'exceptions.ValueError'>: array is not broadcastable to correct shape

Could you explain me :
- Why do an assignment at line 17 works where an increment raises an
error (line 19) ?
```