Running
np.log(math.factorial(21))
throws an AttributeError: log
. Why is that? I could imagine a ValueError
, or some sort of UseYourHighSchoolMathsError
, but why the attribute error?
The result of math.factorial(21)
is a Python long. numpy cannot convert it to one of its numeric types, so it leaves it as dtype=object
. The way that unary ufuncs work for object arrays is that they simply try to call a method of the same name on the object. E.g.
np.log(np.array([x], dtype=object)) <-> np.array([x.log()], dtype=object)
Since there is no .log()
method on a Python long, you get the AttributeError
.
Prefer the math.log()
function, that does the job even on long integers.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With