numpy.ufunc.at#

方法

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

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

参数:
a类数组

要执行就地操作的数组。

indices类数组或元组

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

b类数组

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])