使用numpy vectorize矢量化函数

时间:2012-06-01 10:04:14

标签: python numpy

我想要矢量化以下函数。参数是numpy数组。

def euclidean_distance(dl, dr):
    return math.sqrt(((dl - dr) ** 2).sum())

我做以下

v_u = numpy.vectorize(euclidean_distance)

我正在进行以下调用

v_u(numpy.array([[10, 20, 30], [4, 5, 6]]), numpy.array([1, 2, 3]))

我想要的是我找回一个包含[1, 2, 3][10, 20, 30], [4, 5, 6]的欧氏距离的数组。

我想我错过了一些明显的东西。

修改
以下是我得到的错误

AttributeError: 'int' object has no attribute 'sum'

很明显,dldr作为单个元素传递但不作为数组传递... 所以我想知道是否有人可以纠正它以便它在阵列上运行。

非常感谢

1 个答案:

答案 0 :(得分:5)

为什么你需要vectorize

您可以使用形状广播并执行以下操作:

dist = numpy.sqrt(numpy.sum((d1-dr)**2, axis = 1))