Numpy数组元素划分(1 / x)

时间:2012-04-30 13:46:19

标签: python numpy division

我的问题非常简单,假设我有一个类似

的数组
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)

但我绝对相信有更好的方法可以做到这一点。有没有人有任何想法?

3 个答案:

答案 0 :(得分:12)

1 / array进行整数除法并返回array([1, 0, 0, 0])

1. / array会将数组转换为float并执行操作:

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

答案 1 :(得分:1)

我试过了:

inverse=1./array

这似乎有效...... 原因

1/array

不起作用是因为你的数组是整数而1/<array_of_integers>是整数除法。

答案 2 :(得分:1)

获取整数数组的每个元素的倒数的其他可能方法:

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

使用numpy的倒数:

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

角色:

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