使用 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       ]]

更新于: 2023 年 11 月 2 日

486 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告