geekdoc-python-zh/docs/askpython/numpy-crown.md

4.0 KiB
Raw Permalink Blame History

Numpy.kron():如何使用 Numpy 计算 Kronecker 积?

原文:# t0]https://www . aspython . com/python-modules/num py/numpy-crown

假设给我们一对矩阵我们想以牺牲另一个矩阵为代价来转换一个矩阵。这意味着使用一个矩阵的元素来缩放另一个矩阵。实现这一点的数学过程被称为“Kronecker 积”, Python 中的 NumPy 库提供了一个独特的函数—kron()。

这篇文章将帮助你理解如何使用 numpy 库中的 kron( ) 函数来计算克罗内克乘积。让我们开始理解这个函数,首先使用下面的代码导入 numpy 库。

import numpy as np

此后,我们将通过以下各节进一步探索 kron( ) 函数。

  • *语法*克朗()函数
  • 计算相同维数数组的克罗内克积
  • 计算不同维度数组的克罗内克积

*语法*克朗()函数

需要注意的是,在部署 kron( ) 函数时,应该将待缩放的数组指定为第二个输入实体,同时将用于缩放的数组指定为第一个输入实体。

以下是 kron( ) 功能运行所需的输入。

numpy.kron(a, b)

在哪里,

  • ***a—***N 维数组,包含用于缩放的元素
  • ***b—***要缩放的 N 维数组

计算相同维数数组的克罗内克积

在这一节中,我们来寻找一对一维数组的 Kronecker 积,如下所示。

ar1 = np.array([1, 3, 7, 2, 9, 4])
ar2 = np.array([5, 6, 8, 0, -1, 7])

现在让我们为上述两个数组部署 kron( ) 函数。

np.kron(ar1, ar2)

一旦上面的代码运行,下面的计算将在后端发生,用于计算将以一维数组的形式返回的结果。

  • “ar2”的第一个元素乘以“ar1”的第一个元素得出输出数组的第一个元素(即 5×1 = 5)。
  • “ar2”的第二个元素乘以“ar1”的第一个元素得出输出数组的第二个元素(即 6×1 = 6)。
  • “ar2”中的后续元素也是如此它与“ar1”中的第一个元素相乘这样 8×1 = 80x1 = 0-1×1 = -17×1 = 7。
  • 现在循环从“ar1”的第二个元素开始重复这样“ar2”的每个元素都乘以“ar1”的第二个元素以进一步获得输出数组的元素这样5×3 = 156×3 = 18…, 7×3 = 21.
  • 该过程再次迭代直到ar2中的所有元素都乘以ar1中的元素。
  • 这些元素的乘积按顺序排列从“ar2”元素之间的乘积开始第一个元素来自“ar1”接着是第二个元素来自“ar2”依此类推。

把以上放在数学语言中,

ar1 = [a [11] a [12] …..a[1n] a [21] a [22] …..a[2n]a[m1]a[m2]…..a [mn]

ar2 = b [11] b [12] …..b[1p]b[21]b[22]…..b[2p]b[O1]b[O2]…..b [op]

ar1 和 ar2 的克罗内克乘积=a[11]XB[11]a[12]XB[12]…..a[1n]XB[1n] [am1]XB[O1]a[m2]XB[O2]…..a [mn] xb [op]

Kronecker Product Calculated For One Dimensional Arrays

Kronecker Product Calculated For One-Dimensional Arrays


计算不同维度数组的 Kronecker 积:

当输入不同维度的数组时, kron( ) 函数也适用。但是,如果需要的话,有时它会优先考虑最小的输入。

ar3 = np.array([[1, 3, 7],
                [2, 9, 4]])
ar4 = np.array([[5, 6],
                [8, 0],
                [-1, 7]])
np.kron(ar3, ar4)

Kronecker Product Calculated For Arrays Of Different Dimensions

Kronecker Product Calculated For Arrays Of Different Dimensions


结论:

既然我们已经到了本文的结尾,希望它已经详细说明了如何使用来自 numpy 库中的 kron( ) 函数来计算给定张量对的 Kronecker 积。这里是另一篇解释 Pythonnumpytensordot ()函数的文章。AskPython 中还有许多其他有趣且信息量大的文章,可能会对那些希望提高 Python 水平的人有很大帮助。当你享受这些的时候,再见!