5

次の操作をベクトル化するのに苦労しています。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]

ありがとう!

4

2 に答える 2

2

これが素晴らしいリシェイプベースのトリックです:

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

arr[i]次に、との間のベクトル差arr[j]がで見つかりdiffs[i,j]ます。

于 2012-10-10T05:49:55.983 に答える
0

scipy.spatial.distance を確認してください。すべての距離とすべての距離の関数があります。

于 2012-10-10T03:56:55.340 に答える