Когда я печатаю скаляр numpy.timedelta64
, используя форматирование строки, я получаю TypeError.
In [10]: td = np.timedelta64(5410102,'us')
In [12]: td.ndim # check td is really a scalar
Out[12]: 0
In [13]: print("td: {}".format(td))
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-13-bae2acf5773a> in <module>
----> 1 print("td: {}".format(td))
TypeError: int() argument must be a string, a bytes-like object or a number, not 'datetime.timedelta'
In [14]: print("td: {!r}".format(td)) # printing using repr() works as expected
td: numpy.timedelta64(5410102,'us')
In [15]: print(td) # Just printing also works fine
5410102 microseconds
Есть идеи, что происходит?
Обновление:
Кажется, ошибка в функции numpy.timedelta64.__format__()
.
In [67]: td.__format__("")
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-67-6acc460ea008> in <module>
----> 1 td.__format__("")
TypeError: int() argument must be a string, a bytes-like object or a number, not 'datetime.timedelta'
Мне это кажется просто ошибкой. Обходной путь - преобразовать его в строку перед форматированием.
In [68]: print("{}".format(str(td)))
5410102 microseconds