многократные формы умножения матрицы

В матричном умножении предположим, что A – матрица 3 x 2 (3 строки, 2 столбца), а B – матрица 2 x 4 (2 строки, 4 столбца), тогда, если матрица C = A * B , то C следует имеют 3 строки и 4 столбца. Почему numpy не делает это умножение? Когда я пытаюсь выполнить следующий код, я получаю сообщение об ошибке: ValueError: operands could not be broadcast together with shapes (3,2) (2,4)

 a = np.ones((3,2)) b = np.ones((2,4)) print a*b 

Я пытаюсь с транспонированием A и B и alwasy получить тот же ответ. Зачем? Как сделать матричное умножение в этом случае?

  • Матричное умножение, решение Ax = b для x
  • Матричное умножение в python?
  • Как вычислить стандартную ошибку из результатов ODR?
  • Как преобразовать массив numpy в базу данных pandas?
  • Найти первый элемент numpy ndarray неизвестной формы
  • Numpy - массив против asarray
  • Python: проектирование фильтра временных рядов после анализа Фурье
  • Почему numpy.zeros занимает мало места
  • One Solution collect form web for “многократные формы умножения матрицы”

    Оператор * для numpy-массивов представляет собой умножение по элементам (аналогично произведению Адамара для массивов той же размерности), а не умножение матрицы.

    Например:

     >>> a array([[0], [1], [2]]) >>> b array([0, 1, 2]) >>> a*b array([[0, 0, 0], [0, 1, 2], [0, 2, 4]]) 

    Для матричного умножения с массивами numpy:

     >>> a = np.ones((3,2)) >>> b = np.ones((2,4)) >>> np.dot(a,b) array([[ 2., 2., 2., 2.], [ 2., 2., 2., 2.], [ 2., 2., 2., 2.]]) 

    Кроме того, вы можете использовать класс matrix:

     >>> a=np.matrix(np.ones((3,2))) >>> b=np.matrix(np.ones((2,4))) >>> a*b matrix([[ 2., 2., 2., 2.], [ 2., 2., 2., 2.], [ 2., 2., 2., 2.]]) 

    Более подробную информацию о вещании массивов numpy можно найти здесь , а также дополнительную информацию о классе матрицы можно найти здесь .

    Python - лучший язык программирования в мире.