Numpy Array Element-Wise Division (1/X)

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/array

or

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?

1

3 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./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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

David Miller

David Miller

Executive Financial & Market Analyst

David Miller brings 15 years of experience in global economics, personal finance strategy, and market dynamics. He specializes in turning complex economic trends into actionable insights for everyday readers.

Share this article
Twitter Facebook Pinterest