numpy.ldexp

numpy.ldexp(x1, x2, *ufunc_args) = <ufunc 'ldexp'>

Функция numpy.ldexp() вычисляет x1*2**x2. x1 и x2 должны иметь одинаковую форму. Если вместо x1 указано одно число, то оно будет транслировано на все элементы x2 и наоборот. Данная функция может рассматриваться, как обратная к numpy.frexp.

Параметры:
x1 - число, массив или подобный массиву объект
Массив множителей (мантисс) или число.
x2 - число, массив или подобный массиву объект
Массив степеней двойки или число.
*ufunc_args - аргументы универсальной функции
Аргументы, позволяющие настроить и оптимизировать работу функции (подробнее см. универсальные функции).
Возвращает:
результат - массив NumPy или вещественное число
Массив вычисленных значений x1*2**x2 для всех соответствующих элементов входных массивов или число, если оба аргумента являются числами.
Смотрите так же: spacing, nextafter, frexp, copysign, signbit

Примеры

>>> import numpy as np
>>> 
>>> np.ldexp(3, 4)
48.0
>>> 3*2**4
48
>>> 
>>> 
>>> x1 = 5
>>> x2 = [1, 2]
>>> np.ldexp(x1, x2)
array([10., 20.], dtype=float16)
>>> 
>>> np.ldexp(x2, x1)
array([32., 64.])
>>>
>>>
>>> x = np.arange(5)
>>> x
array([0, 1, 2, 3, 4])
>>> 
>>> x1, x2 = np.frexp(x)
>>> x1
array([0.  , 0.5 , 0.5 , 0.75, 0.5 ])
>>> x2
array([0, 1, 2, 2, 3], dtype=int32)
>>> 
>>> np.ldexp(x1, x2)
array([0., 1., 2., 3., 4.])
>>> 
>>> x == np.ldexp(x1, x2)
array([ True,  True,  True,  True,  True])
>>> 
>>> 
>>> #  Данная функция неприменима к комплексным числам:
... np.ldexp(1 + 1j, 1 - 1j)
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
TypeError: ufunc 'ldexp' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''