2次元の2つの配列があり、列ベクトルは特徴ベクトルです。欲しいnumpy配列間の距離、列方向
arr1 = np.array([[1, 4],
[2, 5],
[3, 6]])
arr2 = np.array([[1, 4, 7, 10, ..],
[2, 5, 8, 11, ..],
[3, 6, 9, 12, ..]])
:つのアレイは、Fは、A、A = 2、F = 3 < < B.例として、(Bは何であってもよい)のFのX B、の他のxは大きさであります可能なフラグメントのそれぞれについて、arr2
の等しいサイズ(この場合は3x2)であるarr1
とarr2
のフラグメントの間の距離を計算する。列ベクトルは互いに独立しているので、arr1
の各列ベクトルと、i
〜i + A
からarr2
までの範囲の列ベクトルのコレクションを計算し、これらの距離の合計を取る必要があると確信しています。
numpyは効率的な方法ですが、2番目の配列からスライスを取り、別のループを使用して、各列ベクトルの距離をarr1
で計算し、スライスの対応する列ベクトルを計算する必要がありますか?上記の配列を使用して明確にするため
例は、:それはcdistが何とかここで使用することができることを意味している場合もちろん
>>> magical_distance_func(arr1, arr2[:,:2])
[0, 10.3923..]
>>> # First, distance between arr2[:,:2] and arr1, which equals 0.
>>> # Second, distance between arr2[:,1:3] and arr1, which equals
>>> diff = arr1 - np.array([[4,7],[5,8],[6,9]])
>>> diff
[[-3, -3], [-3, -3], [-3, -3]]
>>> # this happens to consist only of -3's. Norm of each column vector is:
>>> norm1 = np.linalg.norm([:,0])
>>> norm2 = np.linalg.norm([:,1])
>>> # would be extremely good if this worked for an arbitrary number of norms
>>> totaldist = norm1 + norm2
>>> totaldist
10.3923...
、配列を転置することは、あまりにも結構です。
興味深い質問、+1。 2つのフィーチャセットの関係が何であるか尋ねてもいいですか?一般的な解決策がない場合は、ドメイン固有の解決策が見つかる可能性があります。 –
配列内の要素は、イメージ内の空間フィーチャの存在(または存在する場合はカウント)を示します。私は最も近いマッチを見つけようとしているので、分類タスクと見なすことができます。 'arr1'は、この場合、2つのタイムステップの短いシーケンスであり、Bタイムステップのドキュメントと比較して、最も近い一致シーケンスのインデックスを見つける。 –