У меня есть множество матриц, каждая из которых соответствует вектору.Я хочу умело умножить каждую матрицу на ее вектор.Я знаю, что могу поместить все матрицы в диагональную форму большого блока и умножить их на большой объединенный вектор.
Я хочу знать, есть ли способ использовать numpy.dot
для умножения всех их вэффективный способ.
Я пытался использовать numpy.stack
и numpy.dot
, но я не могу получить только нужные векторы.
Чтобы быть более конкретным.Мои матрицы выглядят так:
R_stack = np.stack((R, R2, R3))
, что составляет
array([[[-0.60653066, 1.64872127],
[ 0.60653066, -1.64872127]],
[[-0.36787944, 2.71828183],
[ 0.36787944, -2.71828183]],
[[-0.22313016, 4.48168907],
[ 0.22313016, -4.48168907]]])
, а мои векторы выглядят так:
p_stack = np.stack((p0, p0_2, p0_3))
, что составляет
array([[[0.73105858],
[0.26894142]],
[[0.88079708],
[0.11920292]],
[[0.95257413],
[0.04742587]]])
Я хочу умножить следующее: R*p0, R2*p0_2, R3*p0_3
.
Когда я делаю dot
:
np.dot(R_stack, p_stack)[:,:,:,0]
, я получаю
array([[[ 0. , -0.33769804, -0.49957337],
[ 0. , 0.33769804, 0.49957337]],
[[ 0.46211716, 0. , -0.22151555],
[-0.46211716, 0. , 0.22151555]],
[[ 1.04219061, 0.33769804, 0. ],
[-1.04219061, -0.33769804, 0. ]]])
3 вектора Iменя интересуют 3 [0,0]
вектора по диагонали.Как я могу получить их?