numpy.place
numpy.place(arr, mask, vals)
Функция place() изменяет элементы массива на указанные значения в зависимости от выполнения заданных условий.
-
- arr - массив NumPy.
- Исходный массив.
- mask - массивов NumPy или массивоподобный объект.
-
Булев массив той же формы что и
arr
, который является маской для исходного массива и определяет какие элементы должны быть заменены: True - замена выполняется, False - элемент остается без изменений. - vals - одномерный массив NumPy или массивоподобный объект.
-
Содержит элементы для вставки в исходный массив. Данный массив может быть любой длины, так как используются только первые n элементов, где n - это количество истинных значений в
mask
, если длинаvals
меньше чем n, то перебор значений для вставки будет выполняться циклически. Данная последовательность может быть пустой, только если все элементы вmask
равны False.
-
Данная функция ничего не возвращает, а сразу изменяет исходный массив
arr
.
Примеры
В качестве vals
может быть указано одно скалярное значение:
>>> import numpy as np
>>>
>>> a = np.arange(20).reshape(4, 5)
>>> a
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19]])
>>>
>>> np.place(a, a%2 == 1, -77)
>>> a
array([[ 0, -77, 2, -77, 4],
[-77, 6, -77, 8, -77],
[ 10, -77, 12, -77, 14],
[-77, 16, -77, 18, -77]])
Если значений в vals
меньше чем значений True в mask
, то значения будут вставляться циклически:
>>> np.place(a, a == -77, [111, 222])
>>> a
array([[ 0, 111, 2, 222, 4],
[111, 6, 222, 8, 111],
[ 10, 222, 12, 111, 14],
[222, 16, 111, 18, 222]])
С другой стороны, если значений в vals
больше чем значений True в mask
, то будут вставлены не все значения:
>>> np.place(a, a == 111, np.arange(10, 110, 10))
>>> a
array([[ 0, 10, 2, 222, 4],
[ 20, 6, 222, 8, 30],
[ 10, 222, 12, 40, 14],
[222, 16, 50, 18, 222]])
Если в mask
вообще нет значений True, то vals
может быть пустым:
>>> a < 0
array([[False, False, False, False, False],
[False, False, False, False, False],
[False, False, False, False, False],
[False, False, False, False, False]])
>>>
>>> np.place(a, a < 0, [])
>>> a
array([[ 0, 10, 2, 222, 4],
[ 20, 6, 222, 8, 30],
[ 10, 222, 12, 40, 14],
[222, 16, 50, 18, 222]])