Can't use /= on numpy array
As pointed out in the comment, the change from int
(which is how a
is created) to float
(which is the result of /) is not allowed when using /=
. To "fix" this the dtype
of a
just has to be a float from the beginning:
a=np.array([2, 4, 6], dtype=np.float64)
a/=2
print(str(a))
>>>array([1., 2., 3.])
As mentioned in the comments, a / 2
produces a float array, but the type of a
is integer. Since NumPy's assignment operators are optimized to reuse the same array (that is a = a + 2
and a += 2
are not exactly the same, the first creates a new array while the second just reuses the existing one), you can not use them when the result has a different dtype. If what you want is an integer division, you can use the //=
assignment operation:
>>> a = np.array([2, 4, 6])
>>> a //= 2
>>> a
array([1, 2, 3])