Как я могу сделать точечное производство в python? - PullRequest
0 голосов
/ 17 февраля 2020

Напишите функцию dot_product (M, N), которая принимает в качестве параметров две матрицы M и N и возвращает новую матрицу, содержащую скалярное произведение этих матриц.

Я понимаю логику c, но не уверен, как сделать умножение каждой строки и столбца, это то, что у меня есть до сих пор

def dot_product(M, N):

    """ takes as parameters two matrices M and N, and returns a new matrix
        containing dot product of these matrices
    """

    assert( len(M[0]) == len(N)), " innter length differnet " 

    new_matrix = zeros(len(M[0]) , len(N))

    transP = transpose(N)

    storing_values = []

    for r in range(len(M)):

        for c in range(len(M[0])):

            storing_values += M[r][c] * transP[r][c]

Я использую вспомогательную функцию transpose to rotate матрица N, поэтому, когда я повторяюсь, я смотрю на одинаковые столбцы и строки для обеих матриц.

вывод должен выглядеть следующим образом: [[26.00, 4.00] [62.00, 13.00]]

1 Ответ

1 голос
/ 17 февраля 2020

Использование встроенной функции точечного произведения numpy выглядит просто: https://docs.scipy.org/doc/numpy/reference/generated/numpy.dot.html

Должно быть что-то с эффектом:

import numpy as np

def dot_product(M, N):
    return np.dot(np.asarray(M), np.asarray(N))

In В общем, много функций в python уже реализовано в таких пакетах, как numpy, я стараюсь не изобретать велосипед. Не уверен, что это приемлемо в вашем случае, так как это кажется проблемой для домашнего задания, но это самый простой способ получить скалярное произведение двух матриц.

...