Вот один из способов -
m,n = img.shape[:2]
r,c = np.mgrid[:m,:n]
out = np.column_stack((r.ravel(), c.ravel(), img.reshape(-1,img.shape[2])))
Альтернатива для получения r,c
:
r,c = np.indices(img.shape[:2])
Другой с присвоением массива -
m,n,r = img.shape
out = np.empty((m,n,2+r), dtype=img.dtype)
out[:,:,0] = np.arange(m)[:,None]
out[:,:,1] = np.arange(n)
out[:,:,2:] = img
out = out.reshape(m*n,-1)