2017-12-08 13 views
0

x-y 좌표가있는 두 점을 지정하면 지정된 행이 있습니다. 이제 2-d numpy 배열에서 오른쪽에있는 점과 왼쪽에있는 점을 구별하고 싶습니다.두 점이 주어진 행별로 평면 분리

다음 코드는 트릭을 수행하지만 이중 루프는 제 종교적 감정을 상하게합니다 (numpy 향해). 더 똑똑한 방법이 있어야할까요?

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)