没有 NumPy 的 Python 中的点积
Dot Product in Python without NumPy
有没有一种方法可以在不使用 NumPy 或 Python 中的 Operation 模块的情况下对包含值的两个列表进行点积?让代码尽可能简单?
例如:
V_1=[1,2,3]
V_2=[4,5,6]
Dot(V_1,V_2)
答案:32
如果没有 numpy,您可以自己编写一个使用 zip
和 sum
.
的点积函数
>>> def dot(v1, v2):
... return sum(x*y for x, y in zip(v1, v2))
...
>>> dot([1, 2, 3], [4, 5, 6])
32
从 Python 3.10 开始,您可以使用 zip(v1, v2, strict=True)
来确保 v1
和 v2
具有相同的长度。
def dot_product(x, y):
dp = 0
for i in range(len(x)):
dp += (x[i]*y[i])
return dp
sample1 = [1,2,3,4,5]
sample2 = [2,1,1,1,1]
dot_product(sample1, sample2) #16
我们可以简单地使用来自 python 的 @ 运算符。
例如:
import numpy as np
x = np.array([25, 2, 5])
y = np.array([0, 1, 2])
print(x@y)
12
有没有一种方法可以在不使用 NumPy 或 Python 中的 Operation 模块的情况下对包含值的两个列表进行点积?让代码尽可能简单?
例如:
V_1=[1,2,3]
V_2=[4,5,6]
Dot(V_1,V_2)
答案:32
如果没有 numpy,您可以自己编写一个使用 zip
和 sum
.
>>> def dot(v1, v2):
... return sum(x*y for x, y in zip(v1, v2))
...
>>> dot([1, 2, 3], [4, 5, 6])
32
从 Python 3.10 开始,您可以使用 zip(v1, v2, strict=True)
来确保 v1
和 v2
具有相同的长度。
def dot_product(x, y):
dp = 0
for i in range(len(x)):
dp += (x[i]*y[i])
return dp
sample1 = [1,2,3,4,5]
sample2 = [2,1,1,1,1]
dot_product(sample1, sample2) #16
我们可以简单地使用来自 python 的 @ 运算符。 例如:
import numpy as np
x = np.array([25, 2, 5])
y = np.array([0, 1, 2])
print(x@y)
12