2017-12-08 11 views
0

x-y座標の2点が与えられたとき、私は行を指定しました。ここでは、2-dのnumpy配列で、左にある点と右にある点を区別したいと思います。2点が与えられた行ごとの平面の分離

次のコードはトリックですが、二重ループは私の宗教的感情を(ナンピーに向かって)傷つけます。よりスマートな方法が必要でしょうか?

def myline(a_x,a_y,b_x,b_y): 
start=np.zeros((100,100)) 
for x in range(100): 
    for y in range(100): 
     val= (b_x - a_x)*(y - a_y) - (x - a_x)*(b_y - a_y) 
     if val<=0: 
      start[x,y]=1 
return start 

答えて

2

これはogridを使用してベクトル化することができます。

x, y = np.ogrid[:100, :100] 
start = (b_x - a_x)*(y - a_y) - (x - a_x)*(b_y - a_y) <= 0 

これはあなたにブールマスクを与えるだろう。他のdtypeが必要な場合

start = start.astype(np.int) 
関連する問題