Как написать функцию, которая принимает два списка в качестве входных данных и возвращает их скалярное произведение - PullRequest
0 голосов
/ 27 октября 2019

Я все еще изучаю основы скрипта Maya Python, и мне трудно наверстать упущенное. На самом деле я не очень понимаю, как работает точка продукта. Поэтому мне трудно понять, что означает «функция, которая принимает два списка в качестве входных данных и возвращает их точечное произведение». Кто-нибудь может мне помочь?

Ответы [ 2 ]

1 голос
/ 27 октября 2019
def dot(l1, l2):
    return sum(x*y for x,y in zip(l1,l2))

Или используйте numpy, но на выходе получается пустой массив.

import numpy as np
result = np.dot(numpy.array(l1), numpy.array(l2))
0 голосов
/ 27 октября 2019

На самом деле я не очень понимаю, как работает скалярное произведение.

Учитывая два вектора a = (a_1,a_2,...,a_n) и b = (b_1,b_2,...,b_n), скалярное произведение представляет собой сумму a_1b_1 + a_2b_2 + ... + a_nb_n.


В Python:

def dot(a, b):
    if len(a) != len(b):
        raise ValueError("a and b have differing sizes")

    sum = 0

    for i in range(len(a)):
        sum += a[i] * b[i]

    return sum   
...