Numpy 2D数组按行减法

时间:2012-10-10 03:42:52

标签: python numpy

我正在努力对以下操作进行矢量化。我有一个x,y,z距离的数组,我需要找到每个矢量之间的差异。

temp_result = np.array([[0.8, 0., 1.], [0., -0.6, 1.],[0.8, 0., 1.]])

我打算做的是在不使用for循环迭代的情况下减去。

 temp_result[0] - temp_result[0]
 temp_result[0] - temp_result[1]
 temp_result[0] - temp_result[2]
 temp_result[1] - temp_result[0]
 temp_result[1] - temp_result[1]
 temp_result[1] - temp_result[2]
 temp_result[2] - temp_result[0]
 temp_result[2] - temp_result[1]
 temp_result[2] - temp_result[2]

谢谢!

2 个答案:

答案 0 :(得分:2)

这是一个很好的基于重塑的技巧:

arr = temp_result
diffs = arr[:,None,:] - arr[None,:,:]

然后在arr[i]中找到arr[j]diffs[i,j]之间的向量差异。

答案 1 :(得分:0)

查看scipy.spatial.distance,你有所有距离的功能。