Python 嵌套数组中带浮点数的点积

Python 嵌套数组中带浮点数的点积,python,linear-algebra,Python,Linear Algebra,我正在尝试使用纯的基本python(无导入或第三方库)实现一个点积函数。对于整数数组,我知道我可以使用以下函数: def dot(v1, v2): return sum(x*y for x,y in zip(v1,v2)) 但是,我的数组是浮动的: lista = [[2.62, -3.97], [-2.32, -1.30], [-1.09, -0.45]] listb = [-0.75, 2.75] 当我尝试打印(dot(lista,listb))时,我得到: TypeError:

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

def dot(v1, v2):
    return sum(x*y for x,y in zip(v1,v2))
但是,我的数组是浮动的:

lista = [[2.62, -3.97], [-2.32, -1.30], [-1.09, -0.45]]
listb = [-0.75, 2.75]
当我尝试
打印(dot(lista,listb))
时,我得到:

TypeError: can't multiply sequence by non-int of type 'list'

如何更正此问题?

您需要遍历一个附加级别来执行乘法:

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]
输出:

[-12.8825, -1.8350000000000004, -0.41999999999999993]
或者,使用带有
映射的函数

def dot(m, n = [-0.75, 2.75]):
  return sum(a*b for a, b in zip(m, n))

print(list(map(dot, 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]
输出:

[-12.8825, -1.8350000000000004, -0.41999999999999993]
或者,使用带有
映射的函数

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支持所谓的。Python没有此功能,因此必须手动遍历数组

map(lambda x: dot(x, listb), lista)

我怀疑你来自Matlab或类似的语言,在那里为一维编写的东西自动在更高的维中工作。这是因为Matlab支持所谓的。Python没有此功能,因此必须手动遍历数组

map(lambda x: dot(x, listb), lista)


这根本不是问题所在。。。问题是您的列表中有一个是嵌套的。为什么要尝试将二维数组与一维数组进行点积?输出的代价是什么?对于输出,我希望[12.89,-1.83,-0.42]我建议退一步,了解点积是什么以及如何计算。两个矩阵之间的任何非平凡点积都需要3个循环。这根本不是问题所在。。。问题是您的列表中有一个是嵌套的。为什么要尝试将二维数组与一维数组进行点积?输出的代价是什么?对于输出,我希望[12.89,-1.83,-0.42]我建议退一步,了解点积是什么以及如何计算。两个矩阵之间的任何非平凡点积都需要3个循环。谢谢!既然大家都讨厌我的问题,我就把它删掉。但是谢谢你@不,你的问题很好。用户只是指出,一个真正的点产品需要比您原来的代码应用更多的逻辑。@Adam_G我可能建议重新编写标题和问题的一部分,以便更准确地反映问题的实质。我怀疑有些人投了反对票,因为他们发现问题根本不是关于浮点值的。啊,谢谢!那一连串的反对票让人很沮丧:-)谢谢!既然大家都讨厌我的问题,我就把它删掉。但是谢谢你@不,你的问题很好。用户只是指出,一个真正的点产品需要比您原来的代码应用更多的逻辑。@Adam_G我可能建议重新编写标题和问题的一部分,以便更准确地反映问题的实质。我怀疑有些人投了反对票,因为他们发现问题根本不是关于浮点值的。啊,谢谢!这一连串的反对票非常令人沮丧:——)