14

我的问题很简单,假设我有一个像

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)

但我绝对肯定有更好的方法来做到这一点。有谁有想法吗?

4

3 回答 3

20

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      ])
于 2012-04-30T13:48:22.320 回答
2

我试过 :

inverse=1./array

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

1/array

不起作用是因为您的数组是整数并且进行1/<array_of_integers>整数除法。

于 2012-04-30T13:49:33.163 回答
2

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

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

使用 numpy 的倒数:

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

投掷:

inv = 1/(array.astype(np.float32))
于 2017-01-11T03:04:19.290 回答