Объект numpy.dtype печатает два разных типа форматированных выходных данных. Зачем? - PullRequest
0 голосов
/ 06 января 2019

Я не знаю, назвать ли это мелочью, но это меня озадачило. numpy.dtype печатает выходные данные в разных форматах, один без оператора печати, а другой с оператором печати. Вот пример:

train = pd.read_csv("train.csv")
In [10]: train.dtypes
Out[10]:
first_active_month     object
card_id                object
feature_1               int64
feature_2               int64
feature_3               int64
target                float64
dtype: object

In [5]: train['card_id'].dtypes
Out[5]: dtype('O')

In [11]: print(train['card_id'].dtypes)
object

Пожалуйста, смотрите вывод двух последних команд. При печати без использования оператора «print» выводом является «dtype (« O »)», а при печати с оператором «print» - «объект».

Я прочитал руководство по numpy.dtype, но не смог найти причины для этих двух разных форматов вывода. Также выполняются следующие работы:

In [16]: train['card_id'].dtypes in ['object']
Out[16]: True

Буду благодарен узнать причины.

Ответы [ 2 ]

0 голосов
/ 06 января 2019

Когда вы оцениваете выражение в REPL, оно печатает repr объекта. Когда вы используете функцию print, она сначала пробует str объекта, то есть методы, соответствующие __repr__ и __str__ для класса, который определил тип.

Так что попробуйте

print(repr(train['card_id'].dtypes))
print(str(train['card_id'].dtypes))
0 голосов
/ 06 января 2019

Они одно и то же и имеют эквивалентность. Просто print () разбирает однозначно.

dtype ('O') = объект python.

Dtypes

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...