У меня была очень похожая проблема, и я нашел решение NumPy из этого сообщения на форуме .
Одним словом, мы можем использовать методы NumPy sign
и absolute
, чтобы выручить нас. Вот пример, который работал для меня:
import numpy as np
x = np.array([-81,25])
print x
#>>> [-81 25]
xRoot5 = np.sign(x) * np.absolute(x)**(1.0/5.0)
print xRoot5
#>>> [-2.40822469 1.90365394]
print xRoot5**5
#>>> [-81. 25.]
Итак, возвращаясь к исходной проблеме корня куба:
import numpy as np
y = -3.
np.sign(y) * np.absolute(y)**(1./3.)
#>>> -1.4422495703074083
Надеюсь, это поможет.