具有负数的数组的numpy.power

时间:2019-04-10 18:59:23

标签: python numpy rounding

我有一个numpy数组arr = np.array([-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5])
那我怎样才能提高每个元素的3/5功效呢?

当我尝试这样的事情时:

>>> np.float_power(arr, 3/5)
>>> arr**(3/5)

我总是得到以下输出:

array([       nan,        nan,        nan,        nan,        nan,
   0.        , 1.        , 1.16150873, 1.26782173, 1.34910253,
   1.4157205 ])

但是,x**(3/5)应该可以计算负数x,因为它只是x的第五个根!
我认为这是因为Python并未将3/5视为“完美分数” 3/5,而是一个(非常)接近0.6(例如0.59999999999999999)的实数。

如何解决此问题?

1 个答案:

答案 0 :(得分:1)

您应将标牌拿走并在以后重新插入:

res = np.float_power(abs(arr), 3./5)*np.sign(arr)

[-2.6265278  -2.29739671 -1.93318204 -1.51571657 -1.  0. 1. 1.51571657  1.93318204  2.29739671  2.6265278 ]

nth root algorithm仅返回正值。我认为numpy中的实现是相似的。