如何在NumPy数组上映射一个函数

  • Post category:Python

在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函数将其转变为向量化函数,最终在数组上映射向量化函数并获得了处理后的结果。