0

これを行う方法については完全に空白です。

配列「ポイント」と、それらのポイントのいくつかを含む配列「a」があります。

points = numpy.array([[1,2],[4,0],[3,0],[2,4]])
a = numpy.array([[1,2], [3,0]])

([0,2]) のポイントの「ポイント」のインデックスを、できればループなしで取得するにはどうすればよいですか?

4

2 に答える 2

0

多くの点aで、scipy.spatial.cKDTreeaを入力し、クエリを実行してそれぞれに最も近いものを見つけますpoint。これは、ランダムに分布した点に対してO(N ln N)を取ります。Kdツリーを参照してください。ループはcythonにあるので、とても高速です。

于 2011-11-04T17:11:05.317 に答える
0

これは 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

于 2011-11-04T14:02:50.053 に答える