我想矢量化以下函数.参数是numpy数组.
def euclidean_distance(dl, dr):
return math.sqrt(((dl - dr) ** 2).sum())
Run Code Online (Sandbox Code Playgroud)
我做了以下事情
v_u = numpy.vectorize(euclidean_distance)
Run Code Online (Sandbox Code Playgroud)
我正在做以下的电话
v_u(numpy.array([[10, 20, 30], [4, 5, 6]]), numpy.array([1, 2, 3]))
Run Code Online (Sandbox Code Playgroud)
我想的是,我回来它包含了欧氏距离的阵列[1, 2, 3]有[10, 20, 30], [4, 5, 6].
我想我错过了一些明显的东西.
编辑:
以下是我得到的错误
AttributeError: 'int' object has no attribute 'sum'
Run Code Online (Sandbox Code Playgroud)
很明显,dl并且dr作为单个元素传递但不作为数组传递......所以我想知道是否有人可以纠正它以便它在数组上运行.
非常感谢
你为什么需要vectorize这个?
您可以使用形状广播并执行以下操作:
dist = numpy.sqrt(numpy.sum((d1-dr)**2, axis = 1))
Run Code Online (Sandbox Code Playgroud)