2012-04-30 648 views
6

我的問題很簡單,假設我有一個像獲得倒數(1/X)numpy的數組的元素

array = np.array([1, 2, 3, 4]) 

一個數組,我想獲得像

[1, 0.5, 0.3333333, 0.25] 
數組

不過,如果你喜歡寫東西

1/array 

np.divide(1.0, array) 

它不起作用。

我到目前爲止發現的唯一方法是寫一樣的東西:

print np.divide(np.ones_like(array)*1.0, array) 

但我絕對某些碼,有一個更好的方式來做到這一點。有人有什麼主意嗎?

回答

7

1/array作出整數除法並返回array([1, 0, 0, 0])

1./array定投陣列浮動和做的伎倆:

>>> array = np.array([1, 2, 3, 4]) 
>>> 1./array 
array([ 1.  , 0.5  , 0.33333333, 0.25  ]) 
+0

順便說一句,如果你在代碼的開頭放了'from __future__ import division',那麼它總是會用整數進行真正的分割秒。這是Python 3中的默認行爲,因爲它是大多數人所期望的答案。你仍然可以使用'//'運算符來進行整數除法。 – DaveP

1

我想:

inverse=1./array 

而且似乎工作... 原因

1/array 

不起作用是因爲你的數組是整數並且1/<array_of_integers>做整數除法。

1

其他可能的方式獲得整數數組的每個元素的倒數:

array = np.array([1, 2, 3, 4]) 

使用numpy的的倒數:

inv = np.reciprocal(array.astype(np.float32)) 

演員:

inv = 1/(array.astype(np.float32))