毎回忘れるのでメモ。 1つのベクトル集合$X$内のベクトル間距離の場合、距離行列が対称行列なので、triu_indicesで狭義上三角行列のインデックスを取得して、その部分だけargsortする。 import numpy as np from scipy.spatial import distance_matrix sample_num = 100 dim = 8 X = np.random.randn(sample_num, dim) D = distance_matrix(X, X) ti = np.triu_indices(sample_num, 1) sorted_indices = np.argsort(D[ti]) ix, iy = ti[0][sorted_indices], ti[1][sorted_indices] print(D[ix, iy]) import num
![2つのベクトル集合の中で距離が小さい組み合わせを求める - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/f0871850e48c5cda263cd1664a4d8bd526a7783a/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9MiVFMyU4MSVBNCVFMyU4MSVBRSVFMyU4MyU5OSVFMyU4MiVBRiVFMyU4MyU4OCVFMyU4MyVBQiVFOSU5QiU4NiVFNSU5MCU4OCVFMyU4MSVBRSVFNCVCOCVBRCVFMyU4MSVBNyVFOCVCNyU5RCVFOSU5QiVBMiVFMyU4MSU4QyVFNSVCMCU4RiVFMyU4MSU5NSVFMyU4MSU4NCVFNyVCNSU4NCVFMyU4MSVCRiVFNSU5MCU4OCVFMyU4MiU4RiVFMyU4MSU5QiVFMyU4MiU5MiVFNiVCMSU4MiVFMyU4MiU4MSVFMyU4MiU4QiZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1jbGlwPWVsbGlwc2lzJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9YjVkYzQxY2ZhNWZiODc4MTE5ZTJiNzYyOTNiNzFmNmM%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQweXU0dSZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9YmQwMzg4M2E3NDU5NDFkMTJiNjM1YmM0ZDdhZWQ2OTE%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3Dfee881cb2378a1b0bdd1cc05977dff11)