numpy.full_like

numpy.full_like(a, fill_value, dtype=None, order='K', subok=True)

Функция full_like() возвращает новый массив все элементы которого равны указанному значению fill_value, а форма и тип данных такие же как у указанного массива a.

Параметры:
a- существующий массив
Форма и тип данных массива a определяет форму и тип данных возвращаемого массива
fill_value - число или любое допустимое значение NumPy
Все элементы выходного массива будут равны fill_value.
dtype - тип данных NumPy (необязательный)
Определяет тип данных выходного массива.
order - 'C', 'F', 'A' или 'K' (необязательный)
Этот параметр определяет в каком порядке массивы должны храниться в памяти: строчном C-стиле или столбчатом стиле Fortran. Флаг 'A' установит макет памяти выходного массива в 'F' если массив a является смежным со столбчатым стилем Fortran, в противном случае макет памяти будет установлен в 'C'. Флаг 'K', используемый по умолчанию, устанавливает макет памяти выходного массива аналогичный массиву a.
subok- True или False (необязательный)
Если параметр установлен в значение True (установлено по умодчанию), то выходной массив будет использовать тип подкласса массива a, если False то тип массива базового класса.
Возвращает:
результат - массив NumPy
Массив все элементы, кторого равны fill_value, с формой и типом данных указанного массива a
Смотрите так же: full, zeros_like, ones_like empty_like

Замечание

Если параметр dtype не указан то тип данных выходного массива будет таким же как у fill_value, который можно узнать, выполнив np.array(fill_value).dtype:

>>> fill_value = 3.14
>>>
>>> np.array(fill_value).dtype
dtype('float64')


Примеры

>>> import numpy as np
>>> 
>>> a = np.array([1, 2, 3, 4, 5])
>>> a
array([1, 2, 3, 4, 5])
>>> 
>>> np.full_like(a, 77)
array([77, 77, 77, 77, 77])
>>> 
>>> b = np.arange(16, dtype = np.float64)
>>> b = b.reshape((4,4))
>>> b
array([[  0.,   1.,   2.,   3.],
       [  4.,   5.,   6.,   7.],
       [  8.,   9.,  10.,  11.],
       [ 12.,  13.,  14.,  15.]])
>>> 
>>> c = np.full_like(b, 77)
>>> c
array([[ 77.,  77.,  77.,  77.],
       [ 77.,  77.,  77.,  77.],
       [ 77.,  77.,  77.,  77.],
       [ 77.,  77.,  77.,  77.]])
>>> 
>>> c.dtype
dtype('float64')
>>>
>>> a = np.array([1,2,3,4,5])    #  Если тип исходного массива int
>>>                              #  а fill_value типа float,
>>> np.full_like(a, 0.1)         #  то данные из дробной части потеряются.
array([0, 0, 0, 0, 0])
>>> 
>>> np.full_like(a, 0 + 5j)      #  Это же касается и комплексных чисел
/home/n1/anaconda3/lib/python3.5/site-packages/numpy/core/numeric.py:361:
ComplexWarning: Casting complex values to real discards the imaginary part
multiarray.copyto(res, fill_value, casting='unsafe')
array([0, 0, 0, 0, 0])
>>>
>>> #  Можно заполнить массив значением inf или nan
... 
>>> c = np.full_like(b, np.inf)
>>> c
array([[ inf,  inf,  inf,  inf],
       [ inf,  inf,  inf,  inf],
       [ inf,  inf,  inf,  inf],
       [ inf,  inf,  inf,  inf]])
>>> 
>>> c = np.full_like(b, np.nan)
>>> c
array([[ nan,  nan,  nan,  nan],
       [ nan,  nan,  nan,  nan],
       [ nan,  nan,  nan,  nan],
       [ nan,  nan,  nan,  nan]])
>>>
>>> #  Для заполнения массива строками
... #  необходимо указать тип данных np.unicode
... 
>>> c = np.full_like(b, 'a', dtype = np.unicode)
>>> c
array([['a', 'a', 'a', 'a'],
       ['a', 'a', 'a', 'a'],
       ['a', 'a', 'a', 'a'],
       ['a', 'a', 'a', 'a']], 
      dtype='<U1')
Смотрите так же: arange, reshape