【发布时间】:2013-05-04 16:57:18
【问题描述】:
假设我有一个像这样的 (3,3,3) 数组。
array([[[1, 1, 1],
[1, 1, 1],
[0, 0, 0]],
[[2, 2, 2],
[2, 2, 2],
[2, 2, 2]],
[[3, 3, 3],
[3, 3, 3],
[1, 1, 1]]])
如何获得对应于 3 个值的每个向量与第零个值之间的欧几里得距离的 9 个值?
比如做numpy.linalg.norm([1,1,1] - [1,1,1]) 2次,然后norm([0,0,0] - [0,0,0]),然后norm([2,2,2] - [1,1,1]) 2次,norm([2,2,2] - [0,0,0]),然后norm([3,3,3] - [1,1,1]) 2次,最后norm([1,1,1] - [0,0,0])。
有什么好的方法来矢量化它吗?我想将距离存储在 (3,3,1) 矩阵中。
结果是:
array([[[0. ],
[0. ],
[0. ]],
[[1.73],
[1.73],
[3.46]]
[[3.46],
[3.46],
[1.73]]])
【问题讨论】:
-
是的,很遗憾,
norm不允许使用axis参数。我不知道为什么。您可能会在 similar question 中找到您想要的答案
标签: python matrix numpy scipy linear-algebra