My question is very simple, suppose that I have an array like
array = np.array([1, 2, 3, 4])and I'd like to get an array like
[1, 0.5, 0.3333333, 0.25]However, if you write something like
1/arrayor
np.divide(1.0, array)it won't work.
The only way I've found so far is to write something like:
print np.divide(np.ones_like(array)*1.0, array)But I'm absolutely certains that there is a better way to do that. Does anyone have any idea?
13 Answers
1 / array makes an integer division and returns array([1, 0, 0, 0]).
1. / array will cast the array to float and do the trick:
>>> array = np.array([1, 2, 3, 4])
>>> 1. / array
array([ 1. , 0.5 , 0.33333333, 0.25 ]) 1 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)) I tried :
inverse=1./arrayand that seemed to work... The reason
1/arraydoesn't work is because your array is integers and 1/<array_of_integers> does integer division.