在不使用np.dot或Python循环的情况下查找点产品

时间:2018-10-20 00:21:51

标签: python python-3.x numpy dot-product

我需要编写一个函数:

采用两个NumPy数组作为参数 返回一个数字:两个输入向量的浮点点积 允许使用numpy数组和np.sum函数,不允许np.dot和循环

在入门课程中,当我不能使用np.dot之类的简单函数时,我已经学到了很多有关使用循环的知识,但是由于某种原因,这使我感到困惑。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

Ciao

可能的解决方案利用了递归

import numpy as np

def multiplier (first_vector, second_vector, size, index, total):
    if index < size:
        addendum = first_vector[index]*second_vector[index]
        total = total + addendum
        index = index + 1
        # ongoing job
        if index < size:
            multiplier(first_vector, second_vector, size, index, total)
        # job done
        else:
            print("dot product = " + str(total))

def main():
    a = np.array([1.5, 2, 3.7])
    b = np.array([3, 4.3, 5])
    print(a, b)

    i = 0
    total_sum = 0

    # check needed if the arrays are not hardcoded
    if a.size == b.size:
        multiplier(a, b, a.size, i, total_sum)

    else:
        print("impossible dot product for arrays with different size")

if __name__== "__main__":
    main()

答案 1 :(得分:-1)

可能被认为是作弊行为,但是numpy使用Python 3.5 added a matrix multiply operator来计算点积而没有实际调用np.dot

>>> arr1 = np.array([1,2,3])
>>> arr2 = np.array([3,4,5])
>>> arr1 @ arr2
26

问题解决了!