I have a 3D numpy array of shape (7,100,50) that represents a stack of 7 100x50 images.
I want to convert this array to a dataframe containing the position of all pixels x,y,z and the value of the pixel (id)
I have managed to do this for a single image (no z):
import numpy as np
import pandas as pd
img = np.random.randint(0,30,size=(100,50))
cell_id = img.flatten()
x = [i % img.shape[1] for i in range(len(cell_id))]
y = [y_ for y_ in range(img.shape[1]) for _ in range(img.shape[0])]
df = pd.DataFrame(data={"id":cell_id, "x":x, "y":y, "z":0})
df:
id x y z
0 29 0 0 0
1 16 1 0 0
2 3 2 0 0
3 15 3 0 0
4 23 4 0 0
... ... ... ... ...
4995 7 45 49 0
4996 6 46 49 0
4997 1 47 49 0
4998 5 48 49 0
4999 7 49 49 0
5000 rows × 4 columns
How do I adjust this to work for
zimg = np.random.randint(0,30,size=(7,100,50))
?