РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
350 of 541 menu

Тип float16

Тип float16 в NumPy представляет собой 16-битное число с плавающей запятой. Он занимает в два раза меньше памяти, чем стандартный float32, и в четыре раза меньше, чем float64. Этот тип данных особенно полезен при работе с большими массивами, нейронными сетями и задачами машинного обучения, где важна экономия памяти и скорость вычислений.

Однако стоит помнить, что float16 имеет ограниченную точность: он может точно представлять только числа с примерно 3-4 десятичными знаками. Диапазон значений составляет приблизительно от ±6.1e-5 до ±6.5e+4. При выходе за эти пределы значения превращаются в бесконечность или ноль.

Синтаксис

Для создания массива с типом float16 укажите его в параметре dtype при создании массива или используйте строковый код типа:

import numpy as np # Способ 1: через параметр dtype arr = np.array([1, 2, 3], dtype=np.float16) # Способ 2: через строковый код типа arr = np.array([1, 2, 3], dtype='float16') # Способ 3: приведение существующего массива arr = np.array([1.5, 2.7, 3.9]).astype(np.float16)

Пример

Создадим массив чисел и укажем тип float16 при создании:

import numpy as np arr = np.array([1.1, 2.2, 3.3, 4.4, 5.5], dtype=np.float16) print(arr) print(arr.dtype)

Результат выполнения кода:

[1.1 2.2 3.3 4.4 5.5 ] float16

Пример

Покажем разницу в точности между float16 и float64 при вычислениях с числами, близкими к пределу точности:

import numpy as np # Массив с типом float16 arr16 = np.array([0.1], dtype=np.float16) # Тот же массив с типом float64 arr64 = np.array([0.1], dtype=np.float64) res16 = arr16 * 10 res64 = arr64 * 10 print("float16:", res16[0]) print("float64:", res64[0]) print("Разница:", res64[0] - res16[0])

Результат выполнения кода:

float16: 1.0 float64: 1.0 Разница: 0.0

Пример

Продемонстрируем переполнение при выходе за допустимый диапазон типа float16 (максимальное значение около 65504):

import numpy as np arr = np.array([1e4, 1e5, 1e6], dtype=np.float16) print(arr)

Результат выполнения кода:

[10000. inf inf]

Пример

Преобразуем массив с типом float64 в float16 для экономии памяти:

import numpy as np # Создаём большой массив float64 arr64 = np.random.default_rng(0).random(1000000) # Преобразуем в float16 arr16 = arr64.astype(np.float16) print("Размер arr64:", arr64.nbytes, "байт") print("Размер arr16:", arr16.nbytes, "байт") print("Экономия:", arr64.nbytes - arr16.nbytes, "байт")

Результат выполнения кода:

Размер arr64: 8000000 байт Размер arr16: 2000000 байт Экономия: 6000000 байт

Смотрите также

  • тип float32,
    который занимает 32 бита и используется по умолчанию
  • тип float64,
    который обеспечивает высокую точность (64 бита)
  • тип int64,
    который хранит целые числа в 64 битах
  • функцию astype,
    которая преобразует тип данных массива
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить