在NumPy中,我们可以使用numpy.vectorize
函数将一个标量函数转变为一个能够在数组上运行的向量化函数,从而将一个函数映射到NumPy数组中。
使用numpy.vectorize
函数的一般方法如下:
import numpy as np
# 定义一个标量函数
def my_func(x):
# 在此处填入自己的函数体
pass
# 将标量函数转变为向量化函数
vectorized_func = np.vectorize(my_func)
# 在数组上映射向量化函数
result_array = vectorized_func(input_array)
以上是一个标准的向量化函数使用方法,下面来看两个具体的示例。
示例 1: 对二维数组进行元素级运算
假设我们有一个二维数组,我们需要对数组中的每个元素取平方根。
import numpy as np
arr = np.array([[4, 9], [16, 25]])
# 定义一个标量函数,用于求平方根
def sqrt(x):
return np.sqrt(x)
# 将标量函数转变为向量化函数
vectorized_sqrt = np.vectorize(sqrt)
# 在数组上映射向量化函数
result_arr = vectorized_sqrt(arr)
print(result_arr)
输出结果为:
[[2 3]
[4 5]]
示例 2: 对数组进行逐元素判断
假设我们有一个一维数组,我们需要判断数组中的元素是否为偶数。
import numpy as np
arr = np.array([2, 3, 4, 5, 6])
# 定义一个标量函数,用于判断是否为偶数
def is_even(x):
return x % 2 == 0
# 将标量函数转变为向量化函数
vectorized_is_even = np.vectorize(is_even)
# 在数组上映射向量化函数
result_arr = vectorized_is_even(arr)
print(result_arr)
输出结果为:
[ True False True False True]
在以上示例中,我们首先定义了一个标量函数,然后使用numpy.vectorize
函数将其转变为向量化函数,最终在数组上映射向量化函数并获得了处理后的结果。