嵌套数组中带浮点的点积

2024-04-16 19:40:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用纯的基本python(没有导入或第三方库)实现一个点积函数。对于整数数组,我知道可以使用以下函数:

def dot(v1, v2):
    return sum(x*y for x,y in zip(v1,v2))

但是,我的数组是浮动的:

^{pr2}$

当我尝试print(dot(lista, listb))时,我得到:

^{3}$

我该怎么更正?在


Tags: 函数inforreturndef整数数组zip
2条回答

我怀疑你来自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]

输出:

^{pr2}$

或者,使用带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)))

相关问题 更多 >