Numpy数组到XY坐标的Pandas数据框架

Bry*_*ank 4 python arrays numpy

我有一个二维numpy数组:

arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
Run Code Online (Sandbox Code Playgroud)

我将如何将其转换为pandas数据框,将该坐标处的x坐标,y坐标和相应的数组值转换为pandas数据框,如下所示:

x   y    val
0   0    1
0   1    4
0   2    7
1   0    2
1   1    5
1   2    8
...
Run Code Online (Sandbox Code Playgroud)

ayh*_*han 6

使用堆栈和重置索引:

df = pd.DataFrame(arr).stack().rename_axis(['y', 'x']).reset_index(name='val')
df

Out: 
   y  x  val
0  0  0    1
1  0  1    2
2  0  2    3
3  1  0    4
4  1  1    5
5  1  2    6
6  2  0    7
7  2  1    8
8  2  2    9
Run Code Online (Sandbox Code Playgroud)

如果订购很重要:

df.sort_values(['x', 'y'])[['x', 'y', 'val']].reset_index(drop=True)
Out: 
   x  y  val
0  0  0    1
1  0  1    4
2  0  2    7
3  1  0    2
4  1  1    5
5  1  2    8
6  2  0    3
7  2  1    6
8  2  2    9
Run Code Online (Sandbox Code Playgroud)