我的问题非常简单,假设我有一个类似
的数组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)
但我绝对相信有更好的方法可以做到这一点。有没有人有任何想法?
答案 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))