NumPy Крон вдоль заданной оси - PullRequest
0 голосов
/ 04 июня 2018

Есть ли функция для применения произведения Кронекера вдоль заданной оси?Например, для заданных двумерных массивов a и b фигур a.shape == (n, k) и b.shape == (n, l) вычисляется c формы c.shape == (n, k*l) с эквивалентным результатом:

c = np.empty((a.shape[0], a.shape[1] * b.shape[1]))
for i in range(c.shape[0]):
    c[i,:] = np.kron(a[i], b[i])

1 Ответ

0 голосов
/ 04 июня 2018

Нет встроенной функции, но мы можем использовать outer elementwise-multiplication, сохраняя их первую ось выровненной, а затем изменять ее форму -

c = (a[:,:,None]*b[:,None,:]).reshape(a.shape[0],-1)

В качестве альтернативы мы можем использовать einsum -

c = np.einsum('nk,nl->nkl',a,b).reshape(a.shape[0],-1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...