Given an Array of Points
points = np.array([[1,1,1], [0,1,1], [1,0,0], [1,1,1]])
create an array that counts the coordinates, meaning:
r = [[0,0], [[1,0],
[0,1]], [0,2]]
meaning the coordinate [1,1,1]
exists twice so a the position [1,1,1]
there is a 2
in the resulting array.
In plain python this would be:
for p in points:
r[p[0]][p[1]][p[2]] += 1
I need this in the context of an realtime application, there are up to 300k points given per frame and a resulting matrix shape of up to 400x400x400, so speed is important. the amount of points and shape of the resulting matrix change dynamically.
I am new to numpy and have not found an efficient way to do this, doing it with a plain python for loop is too slow taking up to a second per frame.