說我有一個(3,3,3)這樣的數組。如何獲得numpy的3x3x3陣列上的歐幾里得距離
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]]])
我如何獲得對應歐氏距離9個值3個值的每個向量與零值之間?
如做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' arg。我不知道爲什麼。你可能會在這個[類似的問題]中找到你正在尋找的答案(http://stackoverflow.com/questions/7741878/how-to-apply-numpy-linalg-norm-to-each-row-of-a -matrix) – shx2 2013-05-10 04:17:11