numpy.kron

numpy.kron(a, b)

Функция numpy.kron() вычисляет произведение Кронекера двух массивов.

Произведение кронекера для двух матриц A и B с формами A.shape = (m, n) и B.shape = (p, q) обозначается символом \(A \otimes B \), а результатом является блочная матрица с формой (m*p, n*q), которая вычисляется по правилу:

$${\displaystyle A\otimes B={\begin{bmatrix}a_{11}B&\cdots &a_{1n}B\\\vdots &\ddots &\vdots \\a_{m1}B&\cdots &a_{mn}B\end{bmatrix}}}$$

Данное правило может быть обобщено на массивы с любой размерностью.

Параметры:
a, b - массивы NumPy или подобные массивам объекты.
Это могут быть числа, одномерные, двумерные или многомерные массивы.
Возвращает:
результат - массив NumPy или число
Произведение Кронекера указанных массивов.
Смотрите так же:
outer, inner, tensordot

Примеры

>>> import numpy as np
>>> 
>>> np.kron(5, [1, 2])
array([ 5, 10])
>>> 
>>> np.kron([3, 4], [1, 2])
array([3, 6, 4, 8])
>>> 
>>> a = [[1, 2], [3, 4]]
>>> 
>>> np.kron([3, 4], a)
array([[ 3,  6,  4,  8],
       [ 9, 12, 12, 16]])
>>> 
>>> a = [[4, 3], [2, 1]]
>>> 
>>> np.kron(a, b)
array([[[ 0,  4,  0,  3],
        [ 8, 12,  6,  9],
        [ 0,  2,  0,  1],
        [ 4,  6,  2,  3]],

       [[16, 20, 12, 15],
        [24, 28, 18, 21],
        [ 8, 10,  4,  5],
        [12, 14,  6,  7]],

       [[32, 36, 24, 27],
        [40, 44, 30, 33],
        [16, 18,  8,  9],
        [20, 22, 10, 11]]])
>>> 
>>> c = np.arange(6).reshape(1, 2, 3)
>>> c
array([[[0, 1, 2],
        [3, 4, 5]]])
>>> 
>>> np.kron(a, c)
array([[[ 0,  4,  8,  0,  3,  6],
        [12, 16, 20,  9, 12, 15],
        [ 0,  2,  4,  0,  1,  2],
        [ 6,  8, 10,  3,  4,  5]]])