>>> c= array([[[1, 2],
[3, 4]],
[[2, 1],
[4, 3]],
[[3, 2],
[1, 4]]])
>>> x
array([[0, 1, 2],
[3, 4, 5]])
возвращает мне такую матрицу, что каждый столбец является произведением каждой матрицы из c, умножая каждый соответствующий столбец x на регулярное матричное умножение. Я пытаюсь выяснить способ его векторизации или, по крайней мере, не использовать для цикла, чтобы решить эту проблему.Операция numble array
array([[6, 6, 16]
12, 16, 22]])
для расширяет эта операция дальше будет говорить, что у меня есть массив матриц, скажет
>>> c
array([[[1, 2],
[3, 4]],
[[2, 1],
[4, 3]],
[[3, 2],
[1, 4]]])
>>> x
array([[[1, 2, 3],
[1, 2, 3]],
[[1, 0, 2],
[1, 0, 2]],
[[2, 3, 1],
[0, 1, 0]]])
def fun(c,x):
for i in range(len(x)):
np.einsum('ijk,ki->ji',c,x[i])
##something
Так в основном, я хочу, чтобы иметь каждую матрицу в й умножении со всеми с. возвращает структуру, аналогичную с без введения этого цикла
причины, почему я делаю это, потому что я столкнулся с проблемой, чтобы решить проблему, пытаясь векторизована
Xc (операция следует за нормальную столбец матрицы векторное умножение), c - трехмерный массив; как c сверху - вектор столбца, который каждый элемент является матрицей (в numpy его форме в приведенном выше). X - матрица с каждым элементом, является 1D-массивом. Выходной сигнал Xc должен быть 1D-массивом.
Таким образом, ожидаемый выход 3D тоже? – Divakar
@ Divakar YES, для удовольствия (c, x) это должен быть 3D-массив; – ElleryL