14 逐元运算

0 阅读2分钟

概念

逐元运算(也译作 “按元素运算”)是 NumPy 中最基础、最核心的运算类型,核心逻辑是:对两个(或一个)数组的「对应位置元素」逐一进行相同的算术 / 逻辑操作,运算结果的形状和原数组完全一致 ,简单说就是 “一对一操作,位置不变、形状不变”。

逐元运算的核心特征

  1. 元素级匹配:只有位置完全对应的元素才会相互运算(比如数组 A 的第 i 行第 j 列元素,只和数组 B 的第 i 行第 j 列元素运算);
  2. 形状对齐:要么两个数组形状完全相同,要么能通过「广播机制」扩展为相同形状(否则报错);
  3. 结果形状不变:运算后数组的行数、列数和原数组一致(广播扩展的除外)。

算术运算

加法

image.png

使用 + 对两个数组 逐元相加

import numpy as np

data = np.array([1, 2])

ones = np.ones(2, dtype=int)

result = data + ones

print(result)

减法

image.png

使用-运算符对两个数组进行逐元相减

import numpy as np

data = np.array([1, 2])

ones = np.ones(2, dtype=int)

result = data - ones

print(result)

乘法

image.png

使用*运算符或np.multiply()函数进行逐元乘法,即两个数组对应元素相乘

import numpy as np

data = np.array([1, 2])

ones = np.ones(2, dtype=int)

result = data * data

print(result)

print(np.multiply(data, data))

除法

image.png

使用/运算符进行逐元除法,即两个数组对应元素相除

import numpy as np

data = np.array([1, 2])

ones = np.ones(2, dtype=int)

result = data / data

print(result)

幂运算

使用**运算符进行逐元幂运算,即对数组中每个元素进行幂运算

import numpy as np

data = np.array([1, 2])

ones = np.ones(2, dtype=int)

result = data ** data

print(result)

比较运算

可以使用><==>=<=等运算符对两个数组进行逐元比较,返回的结果是一个布尔数组,其中对应位置的元素根据比较结果为TrueFalse

import numpy as np

a = np.array([1, 3, 5])

b = np.array([2, 4, 6])

print(a > b)

print(a < b)

print(a == b)

逐元运算的特点和优势

  1. 简洁高效:通过简单的运算符或函数调用即可实现对整个数组的批量运算,无需手动遍历数组元素,大大提高了代码的简洁性和执行效率。
  2. 向量化操作:充分利用了 NumPy 底层的优化机制,能够快速处理大规模数据,比使用 Python 原生的循环操作快很多,尤其在科学计算和数据分析中,能够显著提升计算性能。
  3. 保持维度一致性:逐元运算的结果数组与输入数组维度相同,方便后续的数据处理和分析,例如可以直接将逐元运算的结果作为其他函数或算法的输入,而无需担心维度不匹配的问题。

简单记:逐元运算就是 “挨个算”,每个元素各算各的,位置不挪、形状不变