Python + numpy: почему numpy.log выдает ошибку атрибута, если его операнд слишком велик?
Выполнение
np.log(math.factorial(21))
выбрасывает AttributeError: log. Почему это? Я мог представить себе ValueError или какой-то UseYourHighSchoolMathsError, но почему ошибка атрибута?
Ответ 1
Результат math.factorial(21) является длинным Python. numpy не может преобразовать его в один из своих числовых типов, поэтому он оставляет его как dtype=object. Способ, которым унарные ufuncs работают для массивов объектов, состоит в том, что они просто пытаются вызвать метод с тем же именем на объекте. Например.