Downcast to float16 в pandas.to_numeric - PullRequest
0 голосов
/ 18 июня 2019

Мне было интересно, почему метод pd.to_numeric не может быть понижен до np.float16.Код гласит:

# pandas support goes only to np.float32,
# as float dtypes smaller than that are
# extremely rare and not well supported

Ссылка на код: https://github.com/pandas-dev/pandas/blob/baa77c33fb71c29acea21ba06adaf426ed4cb561/pandas/core/tools/numeric.py#L164

Чрезвычайно редко?У меня есть много DataFrames со значениями, которые идеально вписываются в массив np.float16.Не очень хорошо поддерживается?Можете ли вы дать более подробную информацию?

Спасибо !!

1 Ответ

0 голосов
/ 19 июля 2019

Многие данные могут соответствовать типу np.float16, если вы точно, но проблема обычно возникает, когда вы используете эти числа для вычислений.Как сказал unutbu:

Арифметические ошибки довольно быстро накапливаются с помощью float16s: np.array ([0.1,0.2], dtype = 'float16'). Sum () равно (приблизительно) 0,2998.Особенно, когда вычисления требуют тысячи арифметических операций, это может быть неприемлемым количеством ошибок для многих приложений.

Вы можете найти все виды проблем, связанных с размерами данных, даже игнорируя ошибки.Существуют nan и infinity проблемы, которые возникают при использовании очень маленьких и очень больших значений, которые np.float16 просто не может физически обработать .Это ограничивает его полезность конкретными расчетами, которые с меньшей вероятностью будут использоваться в реальных сценариях.Максимальное представимое значение в буквальном смысле составляет всего 65504. И с большими возможностями хранения и обработки, которые мы имеем на наших компьютерах, больше нет необходимости ограничиваться этим.И поэтому люди-панды просто решили не допускать этого для pd.to_numeric, так как на самом деле его не так много, хотя есть много минусов.Многие программы также не поддерживают этот тип, так как он обычно не используется, и это то, что они имеют в виду, что не очень хорошо поддерживаются.

Конечно, вы можете придумать чрезвычайно большое количество примеров, которые могут соответствовать формату np.float16, но есть и многие, многие другие, которые не могут.Это не означает, что не существует приложений, в которых меньший размер числа лучше.Но эти приложения, вероятно, не будут использовать панд.

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