繁体   English   中英

3D numpy 数组到 Pandas dataframe 值不匹配

[英]3D numpy array to Pandas dataframe mismatch values

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

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

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 之间的 int 数字,而前两列假设具有浮点负数。 但可以看出,第 2 行在第 2 列获得了“类”列的值,并且通常是不匹配的。

I have used this method before to create dataframe from 3D and even more dimension arrays, but for some reason that I can find yet, in this case I get very mismatched dataframe.

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

***为了生成类似的数据集:

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'])

我的最终目标:当每个波段都是一列时,拥有 dataframe

我认为这就是你想要的:

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

output:

            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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM