我有一个shape的3D numpy数组(7,100,50),它表示一个由7个100x50图像组成的堆栈。
我想把这个数组转换成一个 Dataframe ,包含所有像素x,y,z的位置和像素的值(id)
我已经成功地为单个图像(无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
我如何调整它以适用于
zimg = np.random.randint(0,30,size=(7,100,50))
?
3条答案
按热度按时间kwvwclae1#
我看到你在另一条评论中提到了
np.ndenumerate
,这应该可以做到:jecbmhm32#
或者,您也可以执行刚才执行的操作7次,z值将更改,然后使用pd.concat连接每个表
eivnm1vs3#
我将采取相同的形状,但较小的大小(2,10,5),使输出易于解释,也可以运行代码的在线编译器,我正在验证。你可以给原始大小(7,100,50)。
输出: