numpy.power 对于带负数的数组
numpy.power for array with negative numbers
我有一个 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 视为 'perfect fraction' 3/5,而是一个(非常)接近 0.6 的实数(例如 0.59999999999999999)。
我该如何解决这个问题?
你应该拿走标牌,稍后重新插入:
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 returns 仅正值。我认为 numpy 中的实现是相似的。
我有一个 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 视为 'perfect fraction' 3/5,而是一个(非常)接近 0.6 的实数(例如 0.59999999999999999)。
我该如何解决这个问题?
你应该拿走标牌,稍后重新插入:
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 returns 仅正值。我认为 numpy 中的实现是相似的。