我有一个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)的实数。
如何解决此问题?
答案 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中的实现是相似的。