[英]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.