Метод at
Метод at класса ufunc выполняет операцию над элементами массива, расположенными по заданным индексам. Для бинарных функций метод принимает три параметра: массив, в который будет производиться запись, массив индексов и массив значений. Для унарных функций метод принимает массив и массив индексов. Операция выполняется непосредственно над элементами по указанным индексам, изменяя исходный массив.
Синтаксис
# Для бинарных функций
np.ufunc.at(array, indices, values)
# Для унарных функций
np.ufunc.at(array, indices)
Пример
Давайте увеличим элементы массива по указанным индексам на определённое значение:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
indices = np.array([0, 2, 4])
np.add.at(arr, indices, 10)
print(arr)
Результат выполнения кода:
[11 2 13 4 15]
Пример
Выполним операцию умножения для элементов по заданным индексам:
import numpy as np
arr = np.array([2, 4, 6, 8, 10])
indices = np.array([1, 3])
np.multiply.at(arr, indices, 3)
print(arr)
Результат выполнения кода:
[ 2 12 6 24 10]
Пример
Используем унарную функцию для изменения элементов по индексам:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
indices = np.array([0, 2, 4])
np.negative.at(arr, indices)
print(arr)
Результат выполнения кода:
[-1 2 -3 4 -5 6]
Пример
Применим метод для работы с двумерным массивом:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
indices = np.array([0, 2])
values = np.array([[10, 20, 30], [40, 50, 60]])
np.add.at(arr, indices, values)
print(arr)
Результат выполнения кода:
[[11 22 33]
[ 4 5 6]
[47 58 69]]
Пример
Используем метод для накопления значений по повторяющимся индексам:
import numpy as np
arr = np.zeros(5, dtype=int)
indices = np.array([1, 2, 1, 3, 1, 4])
values = np.array([5, 10, 7, 3, 2, 8])
np.add.at(arr, indices, values)
print(arr)
Результат выполнения кода:
[ 0 14 10 3 8]
Смотрите также
-
класс
ufunc,
который представляет универсальные функции в NumPy -
метод
reduce,
который применяет операцию последовательно к элементам массива -
метод
accumulate,
который сохраняет все промежуточные результаты операции -
метод
outer,
который вычисляет операцию для всех пар элементов двух массивов