Click here to Skip to main content
14,837,097 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I have grid of point and want to calculate number of red and blue point surrounded by each point

for example

For point( X marked )

r= red
b= blue

Python
r   b   r
b  [x]  b
b   b   b


blue points = 6

red points = 2

I want to calculate it for the whole data set
Note: I have several dataframes with different grid sizes (24*5, 12*8, etc)
Note: In some of the dataframes I have less number of points then the grid size for example grid is 24*5 but number of points are 118

red=r=1
blue=b=0

df
    y   x   r/b
    4   2   0
    6   12  1
    10  8   1
    11  5   1
    7   1   0
    13  5   0
    7   9   1
    5   4   0
    7   8   1
    3   16  1
    15  10  1
    15  8   1
    3   18  0
    1   16  0
    11  8   1
    11  2   1
    1   4   0
    11  14  1
    11  6   1
    9   20  0
    7   2   1
    7   5   0
    6   19  0
    7   23  0
    3   19  0
    8   2   0
    9   8   1
    11  9   0
    11  3   0
    13  15  1
    2   2   0
    1   2   0
    6   1   0
    3   3   0
    11  19  0
    4   1   0
    3   21  0
    3   17  0
    9   21  0
    7   21  0
    15  15  1
    9   23  0
    14  14  0
    16  14  0
    12  14  0
    4   22  1
    2   20  0
    12  20  0
    6   2   0
    3   23  0
    14  22  1
    11  22  0
    5   6   0
    15  22  0
    7   16  0
    15  18  0
    5   20  0
    7   6   0
    7   24  0
    11  24  0
    3   8   1
    1   20  0
    11  15  0
    7   10  1
    14  20  0
    14  9   0
    12  3   0
    14  2   0
    10  6   0
    2   8   0
    16  3   0
    2   14  0
    12  19  0
    16  21  0
    16  9   0
    2   21  0
    10  7   0
    14  3   0
    14  15  0
    15  17  1
    11  18  1
    13  19  1
    3   1   0
    5   5   0
    8   14  1
    1   10  1
    6   6   0
    1   13  0
    13  9   0
    15  2   0
    9   11  1
    3   12  1
    12  18  0
    5   3   0
    9   3   1
    1   5   0
    9   7   0
    7   11  1
    8   21  0
    9   17  0
    4   12  0
    7   18  0
    3   2   0
    10  2   0
    6   22  0
    13  2   0
    3   4   0
    3   22  0
    5   18  1
    13  14  1
    11  16  1
    12  24  1
    16  20  0
    14  18  1
    4   16  0
    2   22  1
    9   22  0
    1   22  0
    10  21  0
    8   23  0
    2   19  0
    12  1   0
    12  10  1
    2   13  0
    10  15  1
    10  19  0
    14  10  0
    6   9   0
    4   7   0
    4   3   0
    10  10  0
    4   10  1
    2   10  1
    10  11  0
    2   12  0
    4   19  0
    10  1   0
    4   15  0
    16  8   0
    4   8   0
    2   6   0
    12  4   0
    2   4   0
    11  4   0
    13  20  0
    1   24  0
    15  20  0
    7   22  0
    9   24  0
    6   8   0
    10  5   0
    8   8   1
    10  12  1
    6   11  0
    10  9   0
    4   11  0
    12  23  0
    12  17  0
    4   17  0
    12  13  0
    12  5   1
    2   15  0
    12  9   0
    8   1   0
    6   7   0
    16  11  0
    10  23  0
    4   4   0
    3   24  0
    9   12  1
    16  4   0
    13  6   1
    9   2   1
    3   20  0
    15  4   0
    15  14  1
    13  16  1
    8   4   0
    5   16  0
    7   20  0
    1   8   0
    5   24  0
    9   16  1
    16  6   0
    13  12  0
    15  16  1
    5   8   1
    13  18  0
    11  10  1
    13  22  1
    4   6   0
    1   18  0
    9   18  0
    13  17  1
    13  21  0
    11  23  0
    1   15  0
    5   21  0
    5   23  0
    11  21  1
    9   19  0
    12  11  0
    14  17  0
    2   11  0
    8   11  0
    16  12  0
    2   5   0
    16  1   1
    16  15  0
    14  1   0
    8   17  0
    8   7   0
    4   23  0
    6   3   0
    14  7   0
    8   15  0
    12  21  0
    8   13  0
    2   9   0
    8   9   0
    16  5   0
    14  11  0
    2   23  0
    14  5   1
    6   5   0
    6   13  0
    4   5   0
    6   23  0
    8   5   0
    16  7   0
    16  17  1
    4   14  0
    12  8   0
    12  12  0
    6   10  1
    14  12  0
    16  10  0
    8   12  1
    14  8   0
    1   19  0
    5   17  0
    3   15  0
    9   15  0
    3   13  0
    11  13  1
    13  13  0
    13  7   1
    11  7   1
    13  1   1
    16  16  1
    10  14  1
    12  22  0
    6   18  0
    9   4   0
    3   6   1
    7   14  0
    3   14  0
    8   6   0
    5   12  1
    5   11  0
    6   14  1
    10  16  0
    4   20  1
    16  18  1
    8   18  0
    4   24  0
    6   16  1
    14  16  1
    13  3   0
    15  11  0
    15  1   0
    15  3   0
    5   9   0
    1   17  0
    1   9   0
    1   1   0
    7   17  0
    1   21  0
    10  18  0
    16  22  1
    6   24  0
    4   18  0
    2   16  0
    16  2   0
    15  6   0
    9   14  1
    5   14  1
    1   14  1
    3   10  0
    9   10  0
    8   16  0
    5   10  1
    9   6   0
    9   13  0
    15  12  0
    8   20  0
    1   12  0
    11  12  1
    8   22  0
    7   12  1
    13  4   0
    8   24  0
    13  10  1
    6   20  0
    8   10  1
    1   6   0
    5   22  0
    5   2   0
    2   1   0
    11  11  0
    15  7   0
    11  1   1
    9   5   1
    7   7   0
    15  13  1
    13  11  1
    5   7   0
    15  21  0
    10  22  1
    12  2   0
    14  4   0
    2   24  0
    12  16  1
    2   18  0
    15  19  0
    3   11  0
    5   19  0
    10  24  0
    11  17  0
    1   23  0
    3   7   0
    2   17  0
    4   21  0
    14  13  0
    6   15  0
    7   13  0
    10  4   0
    6   21  0
    6   17  0
    14  21  0
    16  13  0
    10  13  0
    15  5   0
    10  17  0
    5   15  0
    7   3   0
    2   7   0
    4   13  0
    3   9   1
    10  3   0
    15  9   0
    2   3   0
    12  15  0
    16  19  0
    7   15  0
    12  6   0
    8   19  0
    4   9   0
    5   1   0
    1   7   0
    1   3   0
    9   1   0
    5   13  0
    1   11  0
    9   9   0
    12  7   0
    13  8   1
14  6   0
15  23  0
16  23  0
15  24  0
16  24  0
13  23  1
14  23  1
13  24  1
14  24  1
7   4   0
11  20  1
6   4   1
10  20  1
8   3   1
14  19  0
3   5   1
7   19  1


What I have tried:

color_matrix=df["r/b"].values.reshape(24, 16) #since this dataframe has grid size 24*16
 
from scipy import signal
 
adjacent_boxes = np.array([[1,1,1], [1,0,1], [1,1,1]])
 
red_dots = signal.convolve2d(color_matrix, adjacent_boxes , mode='same', boundary='fill')
blue_dots = signal.convolve2d(1 - color_matrix, adjacent_boxes , mode='same', boundary='fill')
 
df['red_dots'] = red_dots.flatten()
df['blue_dots'] = blue_dots.flatten()


this code has issue as 1st col= y axis, 2nd col= x axis, show the coordinates of each point and they are not in the sequence , but simply doing .reshape(num_rows, num_cols) will create 2D array as it is sequenced in the dataframa (col3)
Posted
Comments
Gerry Schmitz 8-Feb-21 10:36am
   
Is there an echo in here?
User-14705882 8-Feb-21 10:52am
   
what do you mean ?

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)




CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900