在 Numpy 中对"索引"指定的元素执行非缓冲的就地操作
numpyserver side programmingprogramming更新于 2025/8/14 16:37:17
要对"索引"指定的元素执行非缓冲的就地操作,请使用 Python Numpy 中的 numpy.ufunc.at() 方法。
numpy.ufunc 包含对整个数组逐个元素进行操作的函数。这些 ufunc 是用 C 语言编写的(为了提高速度),并通过 NumPy 的 ufunc 功能链接到 Python 中。通用函数(简称 ufunc)是一种以逐个元素的方式对 ndarray 进行操作的函数,支持数组广播、类型转换和其他一些标准特性。也就是说,ufunc 是一个"矢量化的"包装一个函数,该函数接受固定数量的特定输入,并产生固定数量的特定输出。
步骤
首先,导入所需的库 −
import numpy as np
创建两个一维数组 −
arr1 = np.array([10, 20, 30, 40, 50]) arr2 = np.array([15, 25, 35, 45, 55])
显示数组 −
print("数组 1...
", arr1)
print("
数组 2...
", arr2)
获取数组类型 −
print("
我们的数组 1 类型...
", arr1.dtype)
print("
我们的数组 2 类型...
", arr2.dtype)
获取数组的维度 −
print("
我们的数组 1 维...
",arr1.ndim)
print("
我们的数组 2 维...
",arr2.ndim)
要对由 'indices 指定的操作数元素执行非缓冲的原地操作,请使用 Python Numpy 中的 numpy.ufunc.at() 方法。
设置负值。np.negative.at() 用于将特定项设置为负值。这里,第二个参数是索引,即用于索引第一个操作数的类似数组的索引对象或切片对象。如果第一个操作数有多个维度,则索引可以是数组元组,例如索引对象或切片对象:
np.negative.at(arr1, [0, 1])
print("
设置负值...
", arr1)
设置正值。 np.add.at() 用于将特定项设置为递增值 −
np.add.at(arr2, [0, 1], 1)
print("
设置正值...
", arr2)
示例
import numpy as np
# numpy.ufunc 具有对整个数组逐个元素进行操作的函数。
# ufuncs 使用 C 语言编写(为了提高速度),并通过 NumPy 的 ufunc 功能链接到 Python
# 创建两个一维数组
arr1 = np.array([10, 20, 30, 40, 50])
arr2 = np.array([15, 25, 35, 45, 55])
# 显示数组
print("数组 1...
", arr1)
print("数组 2...
", arr2)
# 获取数组的类型
print("数组 1 的类型...
", arr1.dtype)
print("数组 2 的类型...
", arr2.dtype)
# 获取数组的维度s
print("
我们的数组 1 维...
",arr1.ndim)
print("
我们的数组 2 维...
",arr2.ndim)
# 要对"索引"指定的元素执行非缓冲的原地操作,请使用 Python Numpy 中的 numpy.ufunc.at() 方法。
# 设置负值
# np.negative.at() 用于将特定项设置为负值。
# 此处,第二个参数是索引,即用于索引到第一个操作数的类似数组的索引对象或切片对象。
# 如果第一个操作数有多个维度,则索引可以是类似数组的索引对象或切片对象的元组。
np.negative.at(arr1, [0, 1])
print("
设置负值...
", arr1)
# 设置正值
# np.add.at() 用于将特定项设置为递增值
np.add.at(arr2, [0, 1], 1)
print("
设置正值...
", arr2)
输出
数组 1... [10 20 30 40 50] 数组 2... [15 25 35 45 55] 数组 1 的类型... int64 数组 2 的类型... int64 数组 1 的维度... 1 数组 2 的维度... 1 设置负值... [-10 -20 30 40 50] 设置正值... [16 26 35 45 55]

