# [Numpy-tickets] [NumPy] #380: broadcasting problem?: - differs from -= and + differs from +=

NumPy numpy-tickets at scipy.net
Tue Nov 14 15:47:29 CST 2006

```#380: broadcasting problem?: - differs from  -= and + differs from +=
------------------------+---------------------------------------------------
Reporter:  holistone   |        Owner:  somebody
Type:  defect      |       Status:  closed
Priority:  normal      |    Milestone:
Component:  numpy.core  |      Version:
Severity:  normal      |   Resolution:  wontfix
Keywords:              |
------------------------+---------------------------------------------------
Changes (by rkern):

* status:  new => closed
* resolution:  => wontfix

Old description:

> a = ones((3,2))[[BR]]
> print a-a[0][[BR]]
> [[ 0.  0.] [ 0.  0.] [ 0.  0.]][[BR]]
> a -= a[0][[BR]]
> print a[[BR]]
> [[ 0.  0.] [ 1.  1.] [ 1.  1.]][[BR]][[BR]]
>
> a = ones((3,2))[[BR]]
> a+a[0][[BR]]
> array([[ 2.,  2.], [ 2.,  2.], [ 2.,  2.]])[[BR]]
> a += a[0][[BR]]
> a[[BR]]
> array([[ 2.,  2.], [ 3.,  3.], [ 3.,  3.]])[[BR]]
> I expected the same result in both cases.
> Is this the intended behavior?

New description:

{{{
#!python
a = ones((3,2))
print a-a[0]
[[ 0.  0.] [ 0.  0.] [ 0.  0.]]
a -= a[0]
print a
[[ 0.  0.] [ 1.  1.] [ 1.  1.]]

a = ones((3,2))
a+a[0]
array([[ 2.,  2.], [ 2.,  2.], [ 2.,  2.]])
a += a[0]
a
array([[ 2.,  2.], [ 3.,  3.], [ 3.,  3.]])

}}}

I expected the same result in both cases.
Is this the intended behavior?

Comment:

This is expected. Indexing does not create a new object; it creates a view
into the original object. If you modify the original object, then the view
will also change. The augmented assignments modify the original object in
place where the simple + and - operators create an entirely new object to
hold the results. In the += case, something like the following is
happening under the covers:

{{{
#!python
a[0] = a[0] + a[0]
a[1] = a[1] + a[0]
a[2] = a[2] + a[0]
}}}

The RHS of the second and third lines are getting the modified values
a[0].

--
Ticket URL: <http://projects.scipy.org/scipy/numpy/ticket/380#comment:1>
NumPy <http://projects.scipy.org/scipy/numpy>
The fundamental package needed for scientific computing with Python.
```