scipy.linalg.

khatri_rao#

scipy.linalg.khatri_rao(a, b)[source]#

Khatri-Rao 积

两个矩阵的逐列 Kronecker 积

本文档假定数组参数具有指定的“核心”形状。然而,此函数的数组参数可能具有附加的“批处理”维度,这些维度预置在核心形状之前。在这种情况下,数组被视为低维切片的批处理;有关详细信息,请参阅批处理线性操作

参数:
a(n, k) array_like

输入数组

b(m, k) array_like

输入数组

返回:
c: (n*m, k) ndarray

ab 的 Khatri-Rao 积。

注意

Khatri-Rao 积的数学定义是

\[(A_{ij} \bigotimes B_{ij})_{ij}\]

这是 A 和 B 的每一列的 Kronecker 积,例如

c = np.vstack([np.kron(a[:, k], b[:, k]) for k in range(b.shape[1])]).T

示例

>>> import numpy as np
>>> from scipy import linalg
>>> a = np.array([[1, 2, 3], [4, 5, 6]])
>>> b = np.array([[3, 4, 5], [6, 7, 8], [2, 3, 9]])
>>> linalg.khatri_rao(a, b)
array([[ 3,  8, 15],
       [ 6, 14, 24],
       [ 2,  6, 27],
       [12, 20, 30],
       [24, 35, 48],
       [ 8, 15, 54]])