1 / array makes an integer division and returns array([1, 0, 0, 0]).
1 / array
array([1, 0, 0, 0])
1. / array will cast the array to float and do the trick:
1. / array
>>> array = np.array([1, 2, 3, 4])>>> 1. / arrayarray([ 1. , 0.5 , 0.33333333, 0.25 ])
I tried :
inverse=1./array
and that seemed to work...The reason
1/array
doesn't work is because your array is integers and 1/<array_of_integers> does integer division.
1/<array_of_integers>
Other possible ways to get the reciprocal of each element of an array of integers:
array = np.array([1, 2, 3, 4])
Using numpy's reciprocal:
inv = np.reciprocal(array.astype(np.float32))
Cast:
inv = 1/(array.astype(np.float32))