Counting values ​​Some distance from the center of a circular area in Python

I have a list of points that describe all the pixels in the image shown by me. However, you only need to count the pixels in the circular area. I understand how to do this if the area was a square, but trying to do it with a circle got a bit stuck.

Here's what I have so far:

#Count the photons within a certain region
from collections import Counter

#Read in Data
RA = []
DEC = []

with open('ChandraXraysources2.txt') as f:
     for row in f.readlines():  
        row.strip('\n')
        if not row.startswith("#"):
            spaces=row.split(',')
            RA.append(float(spaces[0]))
            DEC.append(float(spaces[1]))
list_a = RA
list_b = DEC
coord_list=zip(list_a, list_b)


#This is the most important part I think. Above is just reading my data in. 
#Basically what I tried to do was specify the center of the circle, then count 
#only the points a certain distance from that center. 

points=[]
[(x,y) for x,y in coord_list if x==3984.9634 and y==4146.6652]
if i in coord_list:
    d in 5664.85124
    points.append(i)

      

Image in which I am trying to count the pixels, the green circular region is where I want the graph

+3


source to share


2 answers


Something like



points = []
xc,yc = 3984.9634, 4146.6652
r2 = 5664.85124**2 # radius squared
for x,y in zip(RA,DEC):
    if (x-xc)**2 + (y-yc)**2 < r2:
        points.append((x,y))

      

+2


source


coord_list = []
with open('ChandraXraysources2.txt') as f:
     for row in f:
        if not row.startswith("#"):
            coord_list.append(map(float, row.split(',')))
points = [(x,y) for (x,y) in coord_list if (x-3984.9634)**2 + (y-4146.6652)**2 <= 5664.85124**2]

      



+1


source







All Articles