x,y
平面に多くの点があり、長さは10000であり、各点(x,y)
の固有半径はr
です。この小さなデータセットは、私の全データセットのわずか1つです。私は興味のあるポイント(x1,y1)
を持っています、(x1,y1)
の範囲内で近くのポイントを見つけて、(x,y)
と(x1,y1)
の間の距離がr
より小さいという基準を満たしたいと思います。私は良いポイントそのものではなく、それらの良いポイントのインデックスを返したい。この機能で効率よく切れ目のある近隣を見つけてインデックスを返す
import numpy as np
np.random.seed(2000)
x = 20.*np.random.rand(10000)
y = 20.*np.random.rand(10000)
r = 0.3*np.random.rand(10000)
x1 = 10. ### (x1,y1) is an interest point
y1 = 12.
def index_finder(x,y,r,x1,y1):
idx = (abs(x - x1) < 1.) & (abs(y - y1) < 1.) ### This cut will probably cut 90% of the data
x_temp = x[idx] ### but if I do like this, then I lose the track of the original index
y_temp = y[idx]
dis_square = (x_temp - x1)*(x_temp - x1) + (y_temp - y1)*(y_temp - y1)
idx1 = dis_square < r*r ### after this cut, there are only a few left
x_good = x_temp[idx1]
y_good = y_temp[idx1]
、私はそれらの良い点のインデックス(x1,y1)
周りの良い点を見つけることはできませんが。ただし、ORIGINALインデックスは座標(x,y)
に関連する他のデータを抽出するために使用されるため、ORIGINALインデックスが必要です。私が言及したように、サンプル・データ・セットは私の全データ・セットのほんの小さなコーナーであり、私は上記の関数を私の全データ・セットに対して約1,000,000回呼び出すので、上記index_finder
関数の効率も考慮に入れます。
このようなタスクに関する考えはありますか?我々は、単に真の場所を選択するための独自のマスクを第一のマスクへのインデックスがそうのように、第二段階から値をマスクすることができ
どのようにこれらのポイントに 'index_finder'を使用していますか?あなたはそれをループで使っているのですか? – Divakar
私はループ内でこの関数を使います。なぜなら '(x1、y1)'のような興味深い点がたくさんあるからです。この関数自体はループを回避することができます。このデータセットは私の全データセットのわずか1/1000です。 –