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
Замечание
Если параметр 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')