1

我想对以下函数进行矢量化。参数是 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]))

我想要的是得到一个包含 with 的欧几里德距离的[1, 2, 3]数组[10, 20, 30], [4, 5, 6]

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

编辑:
以下是我得到的错误

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

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

非常感谢

4

1 回答 1

5

你为什么需要vectorize那个?

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

dist = numpy.sqrt(numpy.sum((d1-dr)**2, axis = 1))
于 2012-06-01T10:23:50.130 回答