Умножение матриц в Python изменяет размер результата

#python #matrix #numpy

#python #матрица #numpy

Вопрос:

У меня есть матрица 1X2, Mu_I.transpose() , и матрица 2×2, Covariance_I_Inverse .

Результатом умножения должна быть матрица 1×2, но мой результат — матрица 2×2.

Почему? Как я могу получить матрицу 1×2?

 >>> Mu_I.transpose()
[[ 10.02010924   9.99184818]]

>>> Mu_I.transpose().shape
(1, 2)

>>> Covariance_I_Inverse
[[ 0.72006911  0.        ],
 [ 0.          0.77689697]]

>>> Covariance_I_Inverse.shape
(2, 2)

>>> (Mu_I.transpose()*Covariance_I_Inverse)
[[ 7.21517113  0.        ],
 [ 0.          7.76263658]]

>>> (Mu_I.transpose()*Covariance_I_Inverse).shape
(2, 2)
  

Комментарии:

1. спасибо вам всем, это был именно тот случай, так как я могу узнать, что я работаю с массивом или матрицей, потому что я работаю с фреймворком, который я только что установил, и я не знаю коды

Ответ №1:

Я предполагаю, что эти переменные есть numpy.array , но нет numpy.matrix . For numpy.array * определяется как поэлементное умножение. В этом случае используйте numpy.dot() . Это даст вам матричное умножение.

Или просто используйте numpy.matrix и * operator будет матричное умножение.

Комментарии:

1. или лучше, придерживайтесь массивов и используйте np.dot. Это менее запутанно, если массивы и матрицы не смешиваются в одном коде. repr(y) или type(y) показывает тип, матрицу или массив или любой другой подкласс массива.