我需要编写一个函数:
采用两个NumPy数组作为参数 返回一个数字:两个输入向量的浮点点积 允许使用numpy数组和np.sum函数,不允许np.dot和循环
在入门课程中,当我不能使用np.dot之类的简单函数时,我已经学到了很多有关使用循环的知识,但是由于某种原因,这使我感到困惑。有什么建议吗?
答案 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
问题解决了!