numpy 不使用np.dot或Python中的循环查找点积

vuktfyat  于 2022-11-23  发布在  Python
关注(0)|答案(2)|浏览(119)

我需要编写一个函数:
1.接收-两个numpy.array对象
1.返回两个输入numpy数组的浮点点积

不允许用途:

  1. numpy.dot()
    1.任何类型的回路
    有什么建议吗?
vcudknz3

vcudknz31#

一种可能的解决方案是使用递归

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()
n8ghc7c1

n8ghc7c12#

可能被认为是欺骗,但是Python 3.5添加了一个矩阵乘法运算符,numpy使用它来计算点积,而实际上并没有调用np.dot

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

问题解决了!

相关问题