numpy.ufunc.at#

method

ufunc.at(a, indices, b=None, /)#

对由“索引”指定的元素执行操作数“a”上的非缓冲就地操作.对于加法ufunc,此方法等效于 a[indices] += b ,不同之处在于,对于多次索引的元素,结果会累积.例如, a[[0,0]] += 1 将仅由于缓冲而将第一个元素递增一次,而 add.at(a, [0,0], 1) 将使第一个元素递增两次.

参数:
aarray_like

在其上执行就地操作的数组.

indices类数组或元组

用于索引到第一个操作数的类数组索引对象或切片对象.如果第一个操作数具有多个维度,则索引可以是类数组索引对象或切片对象的元组.

barray_like

需要两个操作数的ufunc的第二个操作数.操作数在索引或切片后必须可在第一个操作数上进行广播.

示例

将第 0 项和第 1 项设置为它们的负值:

>>> import numpy as np
>>> a = np.array([1, 2, 3, 4])
>>> np.negative.at(a, [0, 1])
>>> a
array([-1, -2,  3,  4])

递增第 0 项和第 1 项,并将第 2 项递增两次:

>>> a = np.array([1, 2, 3, 4])
>>> np.add.at(a, [0, 1, 2, 2], 1)
>>> a
array([2, 3, 5, 4])

将第一个数组中的第 0 项和第 1 项添加到第二个数组,并将结果存储在第一个数组中:

>>> a = np.array([1, 2, 3, 4])
>>> b = np.array([1, 2])
>>> np.add.at(a, [0, 1], b)
>>> a
array([2, 4, 3, 4])