NumPy ufuncs

什么是 ufuncs?

ufuncs 指的是 "通用函数"(Universal Functions),它们是对 ndarray 对象进行操作的 NumPy 函数。


为什么要使用 ufuncs?

ufuncs 用于在 NumPy 中实现矢量化,这比迭代元素要快得多。

它们还提供广播和其他方法,例如减少、累加等,它们对计算非常有帮助。

ufuncs 还接受其他参数,比如:

  • where 布尔值数组或条件,用于定义应在何处进行操作。
  • dtype 定义元素的返回类型。
  • out 返回值应被复制到的输出数组。

什么是向量化?

将迭代语句转换为基于向量的操作称为向量化。

由于现代 CPU 已针对此类操作进行了优化,因此速度更快。

对两个列表的元素进行相加:

list 1: [1, 2, 3, 4]

list 2: [4, 5, 6, 7]

一种方法是遍历两个列表,然后对每个元素求和。

如果没有 ufunc,我们可以使用 Python 的内置 zip() 方法:

  1. x = [1, 2, 3, 4]
  2. y = [4, 5, 6, 7]
  3. z = []
  4. for i, j in zip(x, y):
  5. z.append(i + j)
  6. print(z)

对此,NumPy 有一个 ufunc,名为 add(x, y),它会输出相同的结果。

通过 ufunc,我们可以使用 add() 函数:

  1. import numpy as np
  2. x = [1, 2, 3, 4]
  3. y = [4, 5, 6, 7]
  4. z = np.add(x, y)
  5. print(z)