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

Функция frexp

Функция frexp разлагает каждое число из переданного массива на мантиссу и экспоненту, таким образом, что число = мантисса * 2^экспонента. Первым параметром функция принимает входной массив. Вторым параметром можно указать массив для вывода экспонент (необязательно). Функция возвращает кортеж из двух массивов: первый содержит мантиссы в диапазоне [0.5, 1.0), второй - целочисленные экспоненты.

Синтаксис

np.frexp(arr, [out2])

Пример

Давайте разложим число 8.0 на мантиссу и экспоненту:

import numpy as np mantissa, exponent = np.frexp(8.0) print(f"mantissa: {mantissa}, exponent: {exponent}")

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

"mantissa: 0.5, exponent: 4"

Проверяем: 0.5 * 2^4 = 0.5 * 16 = 8.0.

Пример

Применим frexp к массиву чисел:

import numpy as np arr = np.array([1.0, 2.0, 3.0, 4.0, 5.0]) mantissa, exponent = np.frexp(arr) print("Mantissas:", mantissa) print("Exponents:", exponent)

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

"Mantissas: [0.5 0.5 0.75 0.5 0.625]" "Exponents: [1 2 2 3 3]"

Для проверки: 0.5*2^1 = 1.0, 0.5*2^2 = 2.0, 0.75*2^2 = 3.0, 0.5*2^3 = 4.0, 0.625*2^3 = 5.0.

Пример

Функция frexp работает и с отрицательными числами:

import numpy as np arr = np.array([-1.5, 2.5, -3.5]) mantissa, exponent = np.frexp(arr) print("Mantissas:", mantissa) print("Exponents:", exponent)

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

"Mantissas: [-0.75 0.625 -0.875]" "Exponents: [1 2 2]"

Знак числа сохраняется в мантиссе, а экспонента всегда положительна для чисел > 1.

Пример

Используем frexp для малых чисел:

import numpy as np arr = np.array([0.1, 0.01, 0.001]) mantissa, exponent = np.frexp(arr) print("Mantissas:", mantissa) print("Exponents:", exponent)

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

"Mantissas: [0.8 0.64 0.512]" "Exponents: [-3 -6 -9]"

Для чисел меньше 1 экспонента становится отрицательной.

Пример

Восстановим исходное число с помощью обратной функции ldexp:

import numpy as np arr = np.array([1.5, 2.7, 3.8]) mantissa, exponent = np.frexp(arr) restored = np.ldexp(mantissa, exponent) print("Original:", arr) print("Restored:", restored)

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

"Original: [1.5 2.7 3.8]" "Restored: [1.5 2.7 3.8]"

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

  • функцию ldexp,
    которая выполняет обратное преобразование
  • функцию modf,
    которая разбивает число на целую и дробную части
  • функцию floor,
    которая округляет числа вниз до целых
  • функцию ceil,
    которая округляет числа вверх до целых
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить