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

相关文章