これを行う方法については完全に空白です。
配列「ポイント」と、それらのポイントのいくつかを含む配列「a」があります。
points = numpy.array([[1,2],[4,0],[3,0],[2,4]])
a = numpy.array([[1,2], [3,0]])
([0,2]) のポイントの「ポイント」のインデックスを、できればループなしで取得するにはどうすればよいですか?
多くの点a
で、scipy.spatial.cKDTreea
を入力し、クエリを実行してそれぞれに最も近いものを見つけますpoint
。これは、ランダムに分布した点に対してO(N ln N)を取ります。Kdツリーを参照してください。ループはcythonにあるので、とても高速です。
これは O(n²) 操作であり、ループのない直接メソッドを持つことを意図していません。
points
次の解決策は、およびの 2D 変数の任意のサイズに対して機能しますa
。
import numpy as np
points = np.array([[1,2],[4,0],[3,0],[2,4]])
a = np.array([[1,2], [3,0]])
np.array([np.argwhere((points==a[i]).all(axis=1))[0][0] for i in xrange(a.shape[0])])
# returns array([0, 2])
a
ただし、これはから欠落しているの値に対しては機能しませんpoints
。