NumPy ufuncs

什么是 ufuncs?

ufuncs 是“通用函数”(Universal Functions)的缩写,它们是操作 ndarray 对象的 NumPy 函数。

为什么要使用 ufuncs?

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

它们还提供了广播和额外的方法,如 reduce、accumulate 等,这些方法对计算非常有帮助。

ufuncs 还接受额外的参数,例如:

where 布尔数组或条件,定义操作应在何处进行。

dtype 定义元素的返回类型。

out 输出数组,应将返回值复制到此数组。

什么是向量化?

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

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

添加两个列表的元素

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

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

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

实例

不使用 ufunc,我们可以使用 Python 的内置 zip() 方法:

x = [1, 2, 3, 4]
y = [4, 5, 6, 7]
z = []

for i, j in zip(x, y):
  z.append(i + j)
print(z)

亲自试一试

NumPy 为此提供了一个名为 add(x, y) 的 ufunc,它将产生相同的结果。

实例

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

import numpy as np

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

print(z)

亲自试一试