我有一個NetCDF文件,其中包含一個帶有精度/刻度== 7/2的浮點值的變量,即有可能的值從-99999.99到99999.99。如何將NetCDF變量浮點數據讀取爲具有與原始NetCDF浮點值相同的精度和比例的Numpy數組?
當我從NetCDF變量中取出一部分值並在調試器中查看它們時,我發現現在我的數組中的值具有比我在原始NetCDF中看到的更高的精度/比例。例如,當我查看ToosUI/ncdump查看器中的值時,它們顯示爲'-99999.99'或'12 .45',但是當我查看切片數組中的值時,它們看起來像'-99999.9921875'(更大的比例長度)。因此,如果我使用'-99999.99'作爲預期值來指示丟失的數據點,那麼我將無法匹配拉入切片陣列的匹配項,因爲這些值具有更大的比例長度,尺度不僅僅是填充的零。
比如我看到這一點,如果我做了ncdump上的NetCDF數據集內的一個點:
Variable: precipitation(0:0:1, 40:40:1, 150:150:1)
float precipitation(time=1348, lat=180, lon=360);
:units = "mm/month";
:long_name = "precipitation totals";
data:
{
{
{-99999.99}
}
}
但是,如果我得到的數據的切片從變量像這樣:
value = precipitationVariable[0:1:1, 40:41:1, 150:151:1]
然後我看到像這樣在我的調試器(的Eclipse/PyDev的):
value == ndarray: [[[-99999.9921875]]]
所以它看起來好像NetCDF數據將我讀入Numpy數組的設置值與NetCDF文件中的原始值的相同精度/比例不同時讀取。或者NetCDF中的值實際上與我讀到的值相同,但是由於ncdump程序本身的某些格式設置,通過ncdump向我顯示的內容正在被截斷。
任何人都可以建議這裏發生了什麼?在此先感謝您的幫助。
BTW我正在開發一個Windows XP計算機上使用Python 2.7.3此代碼,並使用此規定的NetCDF4 API的Python模塊:https://code.google.com/p/netcdf4-python/
感謝,@tiago,你寫得很好,非常翔實響應。 –