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)
会将第一个元素递增两次。1.8.0 版本新增。
- 参数:
- 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])