У меня вопрос о том, как умножить вектор-столбец в матрице A
на вектор-строку в его транспонировании A.T
. Не могли бы вы дать мне несколько советов? Спасибо!
- Предположим, что у нас есть матрица (3x3)
A
следующим образом. - Мы хотим умножить вектор column в
A
на вектор row вA.T
(например, красный). Результатом является (3x3) матрица. - Хотя у нас есть 3 вектора-строки, окончательная выходная форма должна быть (3x3x3).
Вопрос: Могу ли я спросить, можем ли мы каким-либо образом использовать матричные манипуляции для достижения этой цели? Потому что, если мы просто используем A @ A.T
, результат будет (3x3) но не (3x3x3).
(Мы можем решить ее, перебирая каждый столбец A. Но можем ли мы решить ее без цикла for? Спасибо!)
# here is my solution with for-loop
import numpy as np
A = np.array([[1,0,1],[2,10,0],[0,0,10]])
target = []
for i in range(A.shape[0]):
a = A[:,i].reshape(A.shape[0],1)
tem = a@a.T
target.append(tem)
print(np.array(target).shape)
@
работает, еслиi
, пакетное измерение является первым из 3. Прочтите документыmatmul
.einsum
также обладает большой выразительной силой.Вам может понадобиться
swapaxes
илиtranspose
, а неreshape
Привет @hpaulj, я разобрался с твоей инструкцией! Мне просто нужно изменить форму с помощью
B1 = A.reshape(3,3,1)
иB2 = A.reshape(3,1,3)
. Тогда(B1@B2)
— это то, что мне нужно. Большое вам спасибо за вашу помощь!