2024-05-16 15:25:10 发布
网友
我尝试使用纯的基本python(没有导入或第三方库)实现一个点积函数。对于整数数组,我知道可以使用以下函数:
def dot(v1, v2): return sum(x*y for x,y in zip(v1,v2))
但是,我的数组是浮动的:
当我尝试print(dot(lista, listb))时,我得到:
print(dot(lista, listb))
我该怎么更正?在
我怀疑你来自Matlab或类似的语言,在那里为一维编写的东西在更高的维度自动工作。这是因为Matlab支持所谓的array-oriented programming。Python没有这个特性,所以必须手动遍历数组。在
map(lambda x: dot(x, listb), lista)
您需要遍历另一个级别才能执行乘法:
lista = [[2.62, -3.97], [-2.32, -1.30], [-1.09, -0.45]] listb = [-0.75, 2.75] final_results = [sum(a*b for a, b in zip(listb, i)) for i in lista]
输出:
或者,使用带map的函数:
map
def dot(m, n = [-0.75, 2.75]): return sum(a*b for a, b in zip(m, n)) print(list(map(dot, lista)))
我怀疑你来自Matlab或类似的语言,在那里为一维编写的东西在更高的维度自动工作。这是因为Matlab支持所谓的array-oriented programming。Python没有这个特性,所以必须手动遍历数组。在
您需要遍历另一个级别才能执行乘法:
输出:
^{pr2}$或者,使用带
map
的函数:相关问题 更多 >
编程相关推荐