умножая 2 2d матрицы и получая 3д матрицу - PullRequest
0 голосов
/ 19 февраля 2020
import numpy as np

a = np.array([[1,2],[3,4]])

print(a.shape)

c = np.array([[1,2,3]])

print(c.shape)


#wanted result multiplication of a*c would return 2,2,3 shape matrix

final = np.array([[[1,2,3],[2,4,6]],[[3,6,9],[4,8,12]]])

print(final.shape)
print(final)

Я хотел бы умножить две матрицы с разными формами и в основном получить результат, который был бы трехмерной матрицей. Я надеюсь, что вы получите шаблон из кода. Есть ли какой-нибудь простой способ numpyi c для этого? Буду признателен за это.

Ответы [ 2 ]

1 голос
/ 19 февраля 2020

Попробуйте np.einsum

out = np.einsum('ij,kl->klj',c,a)

Out[35]:
array([[[ 1,  2,  3],
        [ 2,  4,  6]],

       [[ 3,  6,  9],
        [ 4,  8, 12]]])

In [36]: out.shape
Out[36]: (2, 2, 3)
1 голос
/ 19 февраля 2020

Для этого можно использовать NumPy широковещание:

a[...,None] * c

array([[[ 1,  2,  3],
        [ 2,  4,  6]],

       [[ 3,  6,  9],
        [ 4,  8, 12]]])

Следующее в основном изменяет размеры, чтобы умножение транслировалось в желаемую форму вывода:

a[...,None].shape
(2, 2, 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...