Функция put_along_axis
Функция put_along_axis записывает значения
в массив по индексам, переданным в виде массива,
вдоль указанной оси. Первым параметром функция
принимает целевой массив, вторым - массив индексов,
третьим - записываемые значения, четвертым - ось.
Запись выполняется на месте, без создания нового
массива.
Синтаксис
np.put_along_axis(arr, indices, values, axis)
Пример
Запишем значения в одномерный массив по индексам:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
indices = np.array([0, 2, 4])
values = np.array([10, 20, 30])
np.put_along_axis(arr, indices, values, axis=0)
print(arr)
Результат выполнения кода:
[10 2 20 4 30]
Пример
Запишем значения в двумерный массив вдоль оси 1:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
indices = np.array([[0, 2], [1, 2], [0, 1]])
values = np.array([[10, 20], [30, 40], [50, 60]])
np.put_along_axis(arr, indices, values, axis=1)
print(arr)
Результат выполнения кода:
[[10 2 20]
[ 4 30 40]
[50 60 9]]
Пример
Используем put_along_axis для замены
максимальных элементов в каждой строке:
import numpy as np
arr = np.array([[1, 5, 3], [4, 2, 6]])
indices = np.argmax(arr, axis=1)[:, np.newaxis]
values = np.array([99, 88])[:, np.newaxis]
np.put_along_axis(arr, indices, values, axis=1)
print(arr)
Результат выполнения кода:
[[ 1 99 3]
[ 4 2 88]]
Пример
Сравним put_along_axis и take_along_axis:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
indices = np.array([[0, 2], [1, 0]])
taken = np.take_along_axis(arr, indices, axis=1)
np.put_along_axis(arr, indices, [[99, 88], [77, 66]], axis=1)
print("Taken values:", taken)
print("Modified array:")
print(arr)
Результат выполнения кода:
"Taken values:" [[1 3]
[5 4]]
"Modified array:"
[[99 2 88]
[66 77 6]]
Смотрите также
-
функцию
take_along_axis,
которая выбирает элементы по индексам вдоль оси -
функцию
put,
которая записывает значения по индексам -
функцию
putmask,
которая заменяет значения по маске -
функцию
place,
которая заменяет значения в массиве по маске