![](/img/trans.png)
[英]Why does yielding an item in a function give different output than printing the item?
[英]Why does R scale{raster} function give a different output than scaling the same raster in PythonWin?
我已經使用R和PythonWin來空間應用統計模型。 我在兩個程序中創建了相同的預測柵格,輸出不同(不是瘋狂不同但不同)。 我想知道兩個預測柵格之間的差異是否可能是由於縮放問題(我必須在我的柵格中縮放值,因為我縮放了我正在應用的模型中的變量)?
我有大型光柵文件,23546列x 9157行,30 x 30單元大小和浮動像素類型。 如果我使用scale {raster}縮放R中柵格的值,則輸出的平均值為7.9e-17和stdev 1。
inputras<-raster(file)
outras1<-scale(inputras)
cellStats(outras1, mean)
# returns 7.874414e-17
cellStats(outras1, sd)
# returns 1
如果我通過減去平均值並除以標准偏差來縮放相同柵格的值,則得到相同的輸出。 沒有驚喜。
X<-cellStats(inputras, mean)
Y<-cellStats(inputras, sd)
outras2<-(inputras-X)/Y
cellStats(outras2, mean)
# returns 7.874414e-17
cellStats(outras2, sd)
#returns 1
如果我在PythonWin中使用arcpy.GetRasterProperties為同一個柵格執行此操作,我會得到不同的輸出。
inputras=arcpy.Raster(file)
X=float(arcpy.GetRasterProperties_management (inputras, "MEAN").getOutput(0))
Y=float(arcpy.GetRasterProperties_management (inputras, "STD").getOutput(0))
outras=(inputras-X)/Y
A=arcpy.GetRasterProperties_management (outras, "MEAN")
B=arcpy.GetRasterProperties_management (outras, "STD")
print A, B
#returns a mean of -6.8e-8 and a stdev of 0.999
我應該指出所有輸出的最小值和最大值都相同。
為什么在使用(據我所知)使用相同的縮放值方法時,R與PythonWin的輸出方法不同? 提前感謝您對此事的任何想法。
你有沒有檢查一下
X<-cellStats(inputras, mean)
Y<-cellStats(inputras, sd)
返回相同
X=float(arcpy.GetRasterProperties_management (inputras, "MEAN").getOutput(0))
Y=float(arcpy.GetRasterProperties_management (inputras, "STD").getOutput(0))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.