Результатом math.factorial(21)
является длина Python.Numpy не может преобразовать его в один из числовых типов, поэтому он оставляет его как dtype=object
.Способ, которым унарные уфунки работают с массивами объектов, заключается в том, что они просто пытаются вызвать метод с тем же именем для объекта.Например,
np.log(np.array([x], dtype=object)) <-> np.array([x.log()], dtype=object)
Поскольку в Python нет метода .log()
, вы получите AttributeError
.