计算数组中每个元素之间的距离
Calculating distance between each element of an array
我有一个数组,
a = np.array([1, 3, 5, 10])
我想创建一个函数来计算每个元素与其他元素之间的距离。应该没有 for 循环,因为速度很关键。
以上的预期结果是:
array([[0, 2, 4, 9],
[2, 0, 2, 7],
[4, 2, 0, 5],
[9, 7, 5, 0]])
您可以使用 numpy.subtract.outer
:
np.abs(np.subtract.outer(a, a))
array([[0, 2, 4, 9],
[2, 0, 2, 7],
[4, 2, 0, 5],
[9, 7, 5, 0]])
或等效地使用以下任一方法:
np.abs(a - a[:, np.newaxis])
np.abs(a - a[:, None])
np.abs(a - a.reshape((-1, 1)))
我有一个数组,
a = np.array([1, 3, 5, 10])
我想创建一个函数来计算每个元素与其他元素之间的距离。应该没有 for 循环,因为速度很关键。
以上的预期结果是:
array([[0, 2, 4, 9],
[2, 0, 2, 7],
[4, 2, 0, 5],
[9, 7, 5, 0]])
您可以使用 numpy.subtract.outer
:
np.abs(np.subtract.outer(a, a))
array([[0, 2, 4, 9],
[2, 0, 2, 7],
[4, 2, 0, 5],
[9, 7, 5, 0]])
或等效地使用以下任一方法:
np.abs(a - a[:, np.newaxis])
np.abs(a - a[:, None])
np.abs(a - a.reshape((-1, 1)))