Python 3.x 2d numpy数组到3列数据帧

Python 3.x 2d numpy数组到3列数据帧,python-3.x,pandas,numpy,Python 3.x,Pandas,Numpy,我有一个2d numpy矩阵,例如: arr = np.arange(0, 12).reshape(3,4) 这是我希望在数据帧中得到的,这样: X Y Z 0 0 0 0 1 1 0 2 2 0 3 3 1 0 4 1 1 5 1 2 6 1 3 7 2 0 8 2 1 9 2 2 10 2 3 11 我如何(有效地)做到这一点 您可以使用numpy功能: x1 =np.repeat(np.arange(arr.shape[0]), len(arr.flatten())/len(np.ar

我有一个2d numpy矩阵,例如:

arr = np.arange(0, 12).reshape(3,4)
这是我希望在数据帧中得到的,这样:

X Y Z
0 0 0
0 1 1
0 2 2
0 3 3
1 0 4
1 1 5
1 2 6
1 3 7
2 0 8
2 1 9
2 2 10
2 3 11

我如何(有效地)做到这一点

您可以使用
numpy
功能:

x1 =np.repeat(np.arange(arr.shape[0]), len(arr.flatten())/len(np.arange(arr.shape[0])))
x2 =np.tile(np.arange(arr.shape[1]), int(len(arr.flatten())/len(np.arange(arr.shape[1]))))
x3= arr.flatten()

pd.DataFrame(np.array([x1,x2,x3]).T, columns=['X','Y','Z'])
输出

    X   Y   Z
0   0   0   0
1   0   1   1
2   0   2   2
3   0   3   3
4   1   0   4
5   1   1   5
6   1   2   6
7   1   3   7
8   2   0   8
9   2   1   9
10  2   2   10
11  2   3   11

您用来从数据帧中的数据获取
arr
的逻辑是什么?X是第一个索引,Y是第二个索引,Z是arr[X,Y]的相应值