使用 NumPy 将每一行除以向量元素
我们可以将 NumPy 数组的每一行除以向量元素。向量元素可以是单个元素、多个元素或数组。在将数组的行除以向量以生成所需功能后,我们使用**除法 (/) 运算符**。行的除法可以是 1 维、2 维或多个数组。
有不同的方法可以执行将每一行除以向量元素的操作。让我们详细了解每种方法。
使用广播
使用 divide() 函数
使用 apply_along_axis() 函数
使用广播
广播是 NumPy 库中提供的一种方法,它允许对不同形状的数组执行数学运算。如果其中一个数组小于另一个数组,则广播会自动将较小数组的形状与较大数组的形状匹配,并逐元素应用数学运算。
语法
以下是使用广播的语法:
array / vector[:, np.newaxis]
示例
让我们看一个使用 NumPy 库的广播方法将每一行除以向量元素的示例。
import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print("The array:",arr) vec = np.array([1, 2, 3]) print("The vector to divide the row:",vec) output = arr / vec[:, np.newaxis] print("The output of the divison of rows by vector using broadcast:",output)
输出
The array: [[1 2 3] [4 5 6] [7 8 9]] The vector to divide the row: [1 2 3] The output of the divison of rows by vector using broadcast: [[1. 2. 3. ] [2. 2.5 3. ] [2.33333333 2.66666667 3. ]]
使用 divide() 函数
NumPy 库提供了一个名为 divide() 的函数,用于将定义的数组的行除以向量元素。此函数将数组和向量作为输入参数。
语法
以下是使用 divide() 函数的语法。
np.divide(array, vector[:, np.newaxis])
示例
在以下示例中,我们使用 divide() 函数将数组的行除以向量元素。
import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print("The array:",arr) vec = np.array([1, 2, 3]) print("The vector to divide the row:",vec) output = np.divide(arr, vec[:, np.newaxis]) print("The output of the divison of rows by vector using divide function:",output)
输出
The array: [[1 2 3] [4 5 6] [7 8 9]] The vector to divide the row: [1 2 3] The output of the divison of rows by vector using divide function: [[1. 2. 3. ] [2. 2.5 3. ] [2.33333333 2.66666667 3. ]]
使用 apply_along_axis() 函数
NumPy 中的 apply_along_axis() 函数允许用户沿 NumPy 数组的特定轴应用函数。此方法可用于执行各种操作,例如将 2D 数组的行除以向量。
语法
以下是使用 apply_along_axis() 函数将数组的行除以向量元素的语法。
np.apply_along_axis(row/vector, 1, array, vector)
示例
在以下示例中,我们使用 apply_along_axis() 函数将 2D 数组的行除以定义的 2D 数组向量。
import numpy as np arr = np.array([[1, 2, 3,1], [4, 5, 6,4], [7, 8, 9,7],[10,11,1,2]]) print("The array:",arr) vec = np.array([1, 2, 3,4]) print("The vector to divide the row:",vec) def divide_row(row, vec): return row / vec output = np.apply_along_axis(divide_row, 1, arr, vec) print("The output of the divison of rows by vector using divide function:",output)
输出
The array: [[ 1 2 3 1] [ 4 5 6 4] [ 7 8 9 7] [10 11 1 2]] The vector to divide the row: [1 2 3 4] The output of the divison of rows by vector using divide function: [[ 1. 1. 1. 0.25 ] [ 4. 2.5 2. 1. ] [ 7. 4. 3. 1.75 ] [10. 5.5 0.33333333 0.5 ]]
广告