If you are new to Python
, you should probably stop reading here.
But, if you have used Python
and numpy
, then read on. Before, that
try these bits of code.
import numpy
a = numpy.array([1,2])
a = a + 0.5j
print a
The “same thing”, in a slightly different way.
import numpy
a = numpy.array([1,2])
a += 0.5j
print a
Both the code blocks, look really the same, until you look carefully. Under normal circumstances a = a + b and a += b behave exactly similarly, and we really don’t need to bother about the differences between them.
But, +=, which is an augmented assignment operator, actually tries
to perform the operation in-place, unlike the other statement where
+
actually returns a new object which is again being referenced by
the name a
.
But, when dealing with numpy
arrays, this will lead to trouble.
When assigning to an array, it’s dtype
is not changed and hence the
trouble.
The right way to use the augmented assignment operator, would be:
import numpy
a = numpy.array([1,2], dtype=complex)
a += 0.5j
print a
The same thing is explained in this thread. Also, Thanks to Bhanukiran for asking me this.