3D numpy 数组到 Pandas 数据帧不匹配值

3D numpy array to Pandas dataframe mismatch values

我有以下形状的 numpy 3D 数组:(688, 549, 3).
每个维度都是一个图像。所有维度 dtype 都是 'float64',然而,第三个维度只有整数(但由于 dtype,它们被保存为浮点数,例如。isntad of 3 它将是 3.0 )。

我正在尝试将数组转换为数据框。 我使用这个脚本:

pd.DataFrame(array.reshape([3,-1]).T,columns=['band1','band2','classes'])

>>> band1   vband2      classes
0   NaN    -19.110207   -10.134580
1   NaN    -28.449677   -15.704137
2   0.0     2.000000    2.000000
3   NaN    -19.117571   -10.166842
4   NaN    -28.500092   -15.727423
....

如您所见,结果不匹配 - 列“类”应该只是 1-4 之间的整数,而前两列应该是浮点负数。但可以看出第2行在第2列得到了“类”列的值,一般来说是不匹配的。

我以前使用过这种方法从 3D 甚至更多维数组创建数据框,但出于某种原因我还可以找到,在这种情况下我得到非常不匹配的数据框。

我的问题是,为什么会发生这种不匹配?我该如何解决?

***为了生成模拟数据集:

band1= np.random.uniform(low=-20, high=-0.1, size=(688, 549))
band2= np.random.uniform(low=-8, high=-0.1, size=(688, 549))
classes=np.random.randint(4, size=(688, 549))

array=np.dstack((band1,band2,classes))

pd.DataFrame(array.reshape([3,-1]).T,columns=['band1','band2','classes'])

我的最终目标:拥有数据框,当每个波段是一列时

我想这就是你想要的:

pd.DataFrame(array.reshape([-1,3]),columns=['band1','band2','classes'])

输出:

            band1     band2  classes
0      -18.785736 -3.710138      0.0
1      -18.922210 -3.469634      0.0
2      -15.049059 -4.815290      0.0
3      -12.835178 -6.440274      1.0
4       -1.855383 -3.362667      2.0
...           ...       ...      ...
377707  -5.288869 -6.399208      2.0
377708 -10.594781 -6.191891      3.0
377709  -2.223590 -0.230346      3.0
377710 -12.577054 -3.737268      3.0
377711 -15.462419 -2.691705      2.0