我正在看一些使用该@符号的Python代码,但我不知道它的作用.我也不知道搜索Python文档会搜索什么,或者当@包含符号时Google不会返回相关结果.
我想应用一个函数fn,它本质上是cosine distance对两个形状为 (10000, 100) 和 (5000, 100) 的大型 numpy 数组按行进行计算,即我计算这些数组中每个行组合的值。
我的实现:
import math
def fn(v1,v2):
sumxx, sumxy, sumyy = 0, 0, 0
for i in range(len(v1)):
x = v1[i]; y = v2[i]
sumxx += x*x
sumyy += y*y
sumxy += x*y
return sumxy/math.sqrt(sumxx*sumyy)
val = []
for i in range(array1.shape[0]):
for j in range(array2.shape[0]):
val.append(fn(array1[i, :], array2[j, :]))
Run Code Online (Sandbox Code Playgroud)
该函数非常快,只需要几毫秒:
CPU times: user 4 ms, sys: 0 ns, total: 4 ms
Wall time: 1.24 ms
Run Code Online (Sandbox Code Playgroud)
有什么有效的方法可以做到这一点吗?